Вопрос

У меня есть тост в рабском потоке, который должен сообщить пользователю, что соединение установлено. Для этого я знаю, что мне нужно использовать Async, чтобы сделать тост, но я не уверен, где или как реализовать расширенную асинхронность. Если я это понимаю, я думаю, что смогу просто создать MyAsync с и просто OnProgressUpdate () Toast?

@Override
public void onProgressUpdate(String... args) {

         Toast.makeText(context, args, Toast.LENGTH_SHORT).show();
}

Спасибо за ваше время ~ aedon

Это было полезно?

Решение

Да, вы должны быть в состоянии просто расширить асинктюду и изменить переменные шаблона к тому, что вам нужно. Toast Class - это статический класс, поэтому его можно назвать из любой нити, не беспокоясь о конфликтах.

Я не вижу никаких проблем с вашим кодом выше, за исключением того, что вы не хотели бы назвать новые сообщения тосты очень часто, так как они стекают. Поэтому, если вы должны были непрерывно позвонить в функцию .show (), она составила бы их и продолжала бы показывать новые сообщения Toasts каждую длину_short, пока он не поймал.

Что касается примера Asynctask, вот вы:

private class MyAsync extends AsyncTask<<What to pass in to doInBackground>, <What to pass in to onProgressUpdate>, <What type onPostExecute receives>> {
     protected T (result type to onPostExecute) doInBackground(T... urls) {
         //Do big calculations in here
     }

     protected void onProgressUpdate(T... progress) {
         //Update
     }

     protected void onPostExecute(T result) {
         //Done
     }
 }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top