Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.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
Java 在Android中关闭并打开应用程序后停止处理程序_Java_Android - Fatal编程技术网

Java 在Android中关闭并打开应用程序后停止处理程序

Java 在Android中关闭并打开应用程序后停止处理程序,java,android,Java,Android,我试图在关闭应用程序后停止处理程序,然后再次打开应用程序,但我不知道如何操作,所以有人能解释一下,在这种情况下我必须做什么? 我有以下方法 private Handler handler = new Handler(); private Timer timer = new Timer(); private TimerTask timerTask; private void openHandler(){ timerTask = new TimerTask() {

我试图在关闭应用程序后停止处理程序,然后再次打开应用程序,但我不知道如何操作,所以有人能解释一下,在这种情况下我必须做什么? 我有以下方法

private Handler handler = new Handler();  
private Timer timer = new Timer(); 
private TimerTask timerTask;

private void openHandler(){
     timerTask = new TimerTask() {
         public void run() { 
            handler.post(myRunnable = new Runnable() {
                public void run() {

                            doSomething();                                                                                                                                                      

                }           
            });                                 
         }       
     };             
     timer.schedule(timerTask, min*60000);                                          
     dialog.dismiss();                                                   
     btnToggleTimer.setClickable(true); 
}
我通过切换按钮调用此方法:

btnToggleTimer.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked1) {  

                     btnToggleTimer.setClickable(false)

                      if(isCheked1){

                               openHandler();
                 }
              }
         });

处理程序将停止,例如5分钟后,但如果我想在这5分钟之前停止,在关闭应用程序并再次打开它之后,我能做些什么?

我认为有很多方法可以做到这一点

我想我应该停止活动的
ondestory()
中的计时器(如果我理解正确的话)

处理程序有一个
removeCallbacks(Runnable r)
方法,因此您可以执行以下操作:

handler.removeCallbacks(myRunnable);

或者您可以使用
cancel()


你好,cYrixmorten,但我认为问题是,当我关闭并打开我的应用程序时,将创建新的计时器、TimerTask和处理程序,并且TimerTask将出现异常。如果它们是在
onCreate
中创建的,那么对象应该在
onDestroy
中有效?
timerTask.cancel();