Как я могу узнать, что AsyncTask, запущенный в фоновом режиме, выполнен?

1

Есть что-то, что я не понимаю здесь...

Я определяю класс

public class SendStringToServer extends AsyncTask<String, Integer, Boolean>
{
     .
     .
     .
}

Теперь я применил метод onPostExecute и я вызываю это фоновое действие из основного действия, используя

 new SendStringToServer().execute("stringToSend");

Теперь, как я могу узнать из основного действия, что это действие было сделано? Привет, я могу узнать из основного действия, которое эта строка уже была отправлена?

Теги:

4 ответа

3
Лучший ответ

Попробуйте вот так:

public Handler myHandler= new Handler(){
        @Override
        public void  handleMessage(Message msg){        

           if(msg.arg1 == 1){
                   //NOW in mainThread

           }
        }
    };

public class SendStringToServer extends AsyncTask<String, Integer, Boolean>
{
     .
     .
     .
     onPostExecute(){
            ---------
        -----------------

       Message msg = myHandler.obtainMessage();
       msg.arg1 = 1;
       myHandler.sendMessage(msg);

     }
}
3

Вы проверяете состояние AsyncTask с помощью этого метода:

asynctask.getStatus(); (Подробнее здесь: http://developer.android.com/reference/android/os/AsyncTask.html#getStatus%28%29)

Также проверьте здесь возможные результаты: http://developer.android.com/reference/android/os/AsyncTask.Status.html

Надеюсь это поможет!

0

Вам нужно использовать событие в вашем onpostexecute, где в активности есть слушатель.

0

Самый простой способ - создать глобальный флаг внутри вашей деятельности

boolean sendComplete = false;

затем в onPostExecute после

new SendStringToServer().execute("stringToSend");

просто добавь

sendComplete = true;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню