-1

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

这是我的处理程序操作

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);

这是我的异步任务开始

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

在我的 asynctask 我有

protected void onCancelled() {

        running = false;
        dialog.dismiss();
                     //some alert dialog for time-out

在 2.33 模拟器中它工作正常。但是当我在 4.0 模拟器上运行我的应用程序时它不会停止。有人知道原因并有解决方案吗?

4

1 回答 1

0

由于未停止或取消处理程序线程,您的 AsyncTask 不会停止。

您可以停止线程和异步任务,而不是使用处理程序使用计时器线程,如下面的片段所示。

 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
                  
            } 

有关更多信息,请访问此 Android 开发人员链接

于 2013-01-03T12:36:25.117 回答