2015-05-17 2 views
1

Когда активность моего приложения идет в фоновом режиме с помощью кнопки «Домой» или «Назад», некоторые коды прослушивателя, такие как requestLocationUpdates или потоки, все еще запущены, Почему?Коды все еще запущены, когда нажата кнопка «Назад» или «Домой», Android

+1

Вы должны разрегистрировать слушатель в 'OnPause()' дублировании для деятельности. Для получения дополнительной информации об общем вопросе, о котором вы спрашиваете, прочтите следующее: http://stackoverflow.com/questions/2033914/quitting-an-application-is-that-frowned-upon –

+0

Как сказал Даниэль, у вас будет для понимания жизненного цикла активности Android. Подробнее об этом здесь: http://developer.android.com/training/basics/activity-lifecycle/index.html – Mauker

ответ

-1

Вы можете реализовать эту методу два обратных вызова в классе (где активность удлиняется) и написать код для обработки исполнения, когда активность скрывает и при нажатии кнопки назад (или какая-либо другая кнопка) нажимаются

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

      } 
-1

Добавить код для приостановки местоположения при вызове метода onpause. вот что я использую. locationManager является объектом LocationManager

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

    } 
0

О проблеме с Threads:

всегда есть цикл в методе выполнения 5HE, который вы контролируете через логическое значение, как, например, isRunning и внутренняя петля, которая находится под контролем! IsPaused для exmpl

Если вы хотите, чтобы «сделать паузу» нити так просто набор isPaused истины, и если вы хотите, чтобы убить его установить isRunning ложь (от isPaused истины)

в бегущей петле пусть сон нити для 100мса, так что он просыпается через каждый 100 мса +, чтобы проверить, если он по-прежнему приостановлен

Смежные вопросы