【问题标题】:Codes are still running when Back or Home button pressed, Android按下返回或主页按钮时,代码仍在运行,Android
【发布时间】:2015-05-17 03:44:09
【问题描述】:

当我的应用活动通过主页按钮或返回按钮进入后台时,一些侦听器代码(如 requestLocationUpdates 或线程)仍在运行,为什么?

【问题讨论】:

标签: android multithreading listener onpause


【解决方案1】:

关于线程的问题:

在 5he 运行方法中始终有一个循环,您可以通过 isRunning 等布尔值控制该循环,例如 和一个由 !isPaused 控制的内部循环,例如

如果你想“暂停”线程,只需将 isPaused 设置为 true,如果你想终止它,请将 isRunning 设置为 false(isPaused 为 true)

在运行循环中让线程休眠100ms,让他每100+ms唤醒一次,检查是否仍然暂停

【讨论】:

    【解决方案2】:

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

        @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();
    
                 }
    

    【讨论】:

      【解决方案3】:

      在调用 onpause 方法时添加代码到暂停位置。这是我正在使用的。 locationManagerLocationManager的对象

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-04-14
        • 2019-10-26
        • 1970-01-01
        • 2012-10-28
        • 1970-01-01
        • 2018-08-12
        • 2022-10-08
        • 1970-01-01
        相关资源
        最近更新 更多