Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓TimerTask赢得';不要停止使用;timer.cancel()”;,暂停时_Android_Timer_Android Asynctask_Onresume_Onpause - Fatal编程技术网

Android 安卓TimerTask赢得';不要停止使用;timer.cancel()”;,暂停时

Android 安卓TimerTask赢得';不要停止使用;timer.cancel()”;,暂停时,android,timer,android-asynctask,onresume,onpause,Android,Timer,Android Asynctask,Onresume,Onpause,我在这里读了很多关于使用cancel()停止计时器的帖子;方法,但无论我如何尝试,在onPause()发生后,计时器仍在后台运行 (请注意,我正在计时器内执行AsyncTask,我知道它只能运行一次,但我担心如果我在主线程上运行AsyncTask,它将挂起我的主活动。) 那么,为什么计时器不会在Pause()上停止 取消计时器时,任务已开始执行。因此,即使计时器被取消,异步任务也会在后台执行 没有理想的方法来处理异步任务的取消。您可能需要检查以下问题: } //end on create

我在这里读了很多关于使用cancel()停止计时器的帖子;方法,但无论我如何尝试,在onPause()发生后,计时器仍在后台运行

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

那么,为什么计时器不会在Pause()上停止


取消计时器时,
任务
已开始执行。因此,即使计时器被取消,异步任务也会在后台执行

没有理想的方法来处理异步任务的取消。您可能需要检查以下问题:

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

        }