onTause时,Android TimerTask不会停止使用" timer.cancel()"

时间:2014-07-29 06:57:57

标签: android timer android-asynctask onresume onpause

我正在阅读一些关于使用cancel()停止计时器的帖子;方法,但无论我如何尝试,在onPause()发生后,计时器在后台继续运行。

(请注意,我正在计时器中执行AsyncTask,我知道它只能运行一次,但我担心如果我在主线程上运行AsyncTask它会挂起我的主要活动。)

那么为什么计时器不会停止onPause()?

} //end on create


        @Override
        protected void onPause() {      
            super.onPause();            
            this.timer.cancel();
            this.timer.purge();

        }

        @Override
        protected void onResume() {     
            super.onResume();
            callAsynchronousTask();
        }

        public void callAsynchronousTask() {            
            final Handler handler = new Handler();
            timer = new Timer();
            TimerTask doAsynchronousTask = new TimerTask() {       
                @Override
                public void run() {
                    handler.post(new Runnable() {
                        public void run() {       
                            try {
                                MyTask task = new MyTask();
                                task.execute("Param 1", "Param 2", "Param 3");  
                            } catch (Exception e) {
                          }
                        }
                    });
                }
            };
            timer.schedule(doAsynchronousTask, 0, 2000);    

        }

1 个答案:

答案 0 :(得分:1)

取消计时器后,task已经开始执行。因此,即使计时器被取消,AsyncTask也会在后台执行。

没有理想的方法来处理AsyncTask的取消。您可能需要查看此问题:Android - Cancel AsyncTask Forcefully