【问题标题】:Android TimerTask won't stop using "timer.cancel()", when onPause当 onPause 时,Android TimerTask 不会停止使用“timer.cancel()”
【发布时间】:2014-07-29 06:57:56
【问题描述】:

我在这里阅读了许多关于使用 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);    

        }

【问题讨论】:

    标签: android timer android-asynctask onresume onpause


    【解决方案1】:

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

    没有理想的方法来处理 AsyncTask 的取消。你可能想检查这个问题:Android - Cancel AsyncTask Forcefully

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多