2016-04-23 2 views
2

Мое приложение имеет в настоящее время только одну форму, которая слушает датчик акселерометра. В моем методе start() я включаю прослушиватель, а в методе stop() я выключаю его. Я подтвердил, что слушатель отключается, когда я нажимаю кнопку «домой» Android, но когда я нажимаю кнопку «Назад», приложение выходит, и Android возвращается на главный экран, но слушатель продолжает движение, а это значит, что метод stop() так и не получил вызов , Является ли моей обязанностью обрабатывать кнопку «Назад» с кодом для вызова метода stop()? Или это ошибка в рамках CodenameOne? Мне кажется, что когда кнопка «Назад» возвращает пользователя на главный экран, он должен позвонить мне stop().Не может ли кнопка «Назад» вызвать stop()?

+1

Это похоже на ошибку в codenameone, мы исправим это. спасибо – Chen

+0

Вы смогли воспроизвести ошибку Чен? –

+0

Да, это уже исправлено в хранилище с открытым исходным кодом. – Chen

ответ

0

Это исправлено. Я проверил его, и теперь он работает правильно.

0

Я не знаю о CodenameOne framework, но знаю Android SDK.

Activity.onBackPressed() следует использовать, когда вы используете кнопку «Назад». Просто потому, что ваша активность больше не видна, это не значит, что она была получена, и это может объяснить, почему Activity.stop() не вызывается (сразу).

В зависимости от вашего варианта использования, Activity.onPause() также может работать лучше.

HTH. Удачи вам в проекте.

0

Я не знаю, о рамках CodenameOne, но когда приложение видна и при нажатии кнопки назад она вызывает все четыре метода в следующем порядке

1)onBackPressed() 
2)onPause() 
3)onStop() 
4)onDestroy() 

и при нажатии кнопки домой он вызывает только

1)onPause() 
2)onStop() 

методы поэтому, когда вы нажимаете кнопку «onStop», вызывается. Вы должны указать исходный код, чтобы люди могли четко понимать вашу проблему.

1

Я не уверен обо всех подробностях вашей проблемы, однако вы можете разрешить это, вызвав setBackCommand в этой одной форме.

yourForm.setBackCommand( 
         new Command("closing the sensor listener"){ 
          @Override 
          public void actionPerformed(ActionEvent ev){ 
           // your code to close the listener 
          } 
         } 
       ); 
Смежные вопросы