Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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_Android_Multithreading_Listener_Onpause - Fatal编程技术网

当按下“返回”或“主页”按钮时,代码仍在运行,Android

当按下“返回”或“主页”按钮时,代码仍在运行,Android,android,multithreading,listener,onpause,Android,Multithreading,Listener,Onpause,当我的应用程序活动在后台使用Home按钮或Back按钮时,某些侦听器代码(如requestLocationUpdates或threads)仍在运行,为什么?您可以在类中实现这两个回调方法(活动在其中扩展),并编写代码来处理活动隐藏时和返回按钮时的执行(或其他按钮)被按下 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyE

当我的应用程序活动在后台使用Home按钮或Back按钮时,某些侦听器代码(如requestLocationUpdates或threads)仍在运行,为什么?

您可以在类中实现这两个回调方法(活动在其中扩展),并编写代码来处理活动隐藏时和返回按钮时的执行(或其他按钮)被按下

    @Override    
    public boolean onKeyDown(int keyCode, KeyEvent event) {
                 if (keyCode == KeyEvent.KEYCODE_BACK) {
                     /*code to handle when back button is pressed*/
                 }
                 else if (keyCode == KeyEvent.KEYCODE_HOME) {
                     /*code to handle when HOME sbutton is pressed*/
                 }
                 return false;
             }
     @Override
     protected void onPause() {
/*code to handle when activity goes in background and becomes inactive*/        
         super.onPause();

             }

调用onpause方法时,向pause location添加代码。以下是我使用的内容。
locationManager
locationManager

 @Override
    protected void onPause() {
         if(locationManager != null){
            locationManager.removeUpdates(GPSTracker.this);
        }
        super.onPause();

    }

关于线程的问题:

总是有一个循环在5他运行的方法,你控制通过一个布尔像是运行。 还有一个由!控制的内环,用于exmpl

如果您想“暂停”线程,只需将isPaused设置为true,如果您想终止它,则将isRunning设置为false(当然是isPaused设置为true)


在运行循环中,让线程睡眠100毫秒,这样他每100毫秒醒来一次,检查它是否仍处于暂停状态

您应该在
onPause()中注销侦听器
override for Activities。有关您所询问的一般主题的更多信息,请阅读以下内容:正如Daniel所说,您必须了解android活动生命周期。有关此方面的更多信息,请参见: