处理程序无法在更高的api中取消asynctask

时间:2013-01-03 12:30:18

标签: android android-asynctask handler

在我的应用程序中,我使用asynctask进行操作。但是我也使用处理程序在超时的情况下取消我的任务。

这是我的处理程序操作

Handler mHandler = new android.os.Handler() {

        @Override
        public void handleMessage(Message msg) {
            task.cancel(true);
        }
    };

    Message msg = new Message();
    msg.arg1 = 0;
    mHandler.sendMessageDelayed(msg, 1000);

这是我的asynctask start

    final findIpTask task = new findIpTask(1, 2);
    task.execute();

在我的asynctask我有

protected void onCancelled() {

        running = false;
        dialog.dismiss();
                     //some alert dialog for time-out
<2.>在2.33模拟器中它工作正常。但是当我在4.0模拟器上运行我的应用程序时它不会停止。任何人都知道为什么并有解决方案。

1 个答案:

答案 0 :(得分:0)

由于没有停止或处理程序线程,您的AsyncTask不会停止。

您可以停止线程和asyncTask,而不是使用处理程序 TIMER线程。如下面的代码段所示。

 Timer myTimer = new Timer();
  myTimer.schedule(new TimerTask() {
     @Override
     public void run() {
//Your Stuffs
 }
  }, 0, 1000); // put your delay here 


if(ButtonStopped == true){
     myTimer .cancel();
     myTimer .purge();
     //your stuffs
     task.cancle();// call here for stopping your asyncTask
     }else{
         //your stuffs

            } 

for more info go to this android developer link.

希望这会帮助你。