Android 处理程序无法在更高的api中取消异步任务

Android 处理程序无法在更高的api中取消异步任务,android,android-asynctask,handler,Android,Android Asynctask,Handler,在我的应用程序中,我使用异步任务进行操作。但我也使用处理程序在超时时取消我的任务 这是我的处理程序操作 Handler mHandler = new android.os.Handler() { @Override public void handleMessage(Message msg) { task.cancel(true); } }; Message msg = new Message();

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

这是我的处理程序操作

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();
在我的任务中,我有

protected void onCancelled() {

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

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

您的异步任务不会因为没有停止或取消处理程序线程而停止

您可以停止线程和异步任务,而不是使用处理器usetimer thread,如下面的代码段所示

 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
                  
            } 

有关详细信息。

以及如何设置超时持续时间?按钮是否停止?对不起,这是从哪里来的?另外,我是否要将task.execute放入run(){}?那个么我什么时候给我的定时器打电话。取消?在定时器之后我会把什么作为“我的东西”呢。purge@FatihKaplan--当您单击“停止”按钮时,或当和wr要停止调用timer.cancle,然后单击“清除”()。你想阻止的一切。这只是一个例子。按照你的结构去做。我想要一个暂停,比如10秒后我想要取消。