我怎么知道在后台运行的AsyncTask已经完成了?

时间:2011-12-19 07:47:33

标签: android

这里有一些我不理解的东西......

我定义了类

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

现在,我强调了'onPostExecute'方法,并通过使用

从主活动调用此后台操作
 new SendStringToServer().execute("stringToSend");

现在,我如何从主要活动中了解到这一行动已经完成? 我可以从主要活动中知道这个字符串已经发送了吗?

4 个答案:

答案 0 :(得分: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

希望这有帮助!

答案 1 :(得分: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);

     }
}

答案 2 :(得分:0)

最简单的方法是在活动中创建一个全局标志

boolean sendComplete = false;

然后在你的onPostExecute之后

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

只需添加

sendComplete = true;

答案 3 :(得分:0)

你需要在你的onpostexecute中使用一个事件,其中活动有一个监听器。