2010-11-29 2 views
1

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

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

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

Спасибо за ваше время ~ аэдона

+0

Это действительно не имеет смысла. Вы хотите показать прогресс в тосте? – 2010-11-29 17:01:11

ответ

1

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

Я не вижу никаких проблем с вашим кодом выше, за исключением того, что вы не захотите часто называть новые сообщения Toast, так как они складываются. Поэтому, если вы должны были непрерывно вызывать функцию .show(), они складывали бы их и продолжали показывать новые сообщения Toast каждый LENGTH_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 
    } 
} 
+0

Я не уверен, что сделает сообщение Toast в onProgressUpdate. Если у ОП есть проблемы, см. Этот вопрос: http://stackoverflow.com/questions/4209814/posting-toast-message-from-a-thread (это использует Thread, а не AsyncTask, но вы все же можете поговорить с ui thread так же – Andrew 2010-11-29 17:32:46