В настоящее время, чтобы узнать, когда мое приложение выходит, я использую onDestroy()
для выполнения кода, который закрывает и сокеты и отключает Bluetooth. Теперь единственная проблема заключается в том, что onDestroy()
не всегда вызывается, поэтому на удаленное устройство не может быть отправлен сигнал, что приложение выходит, а Bluetooth не отключается. Кто-нибудь знает, каким образом я могу узнать, выходит ли приложение в 100% случаев?Android обнаруживает, когда активность разрушена
ответ
Android предоставляет вам звонок onPause()
. onStop()
и onDestroy()
не предоставляются. Поместите свой код в onPause()
и onResume()
.
Это зависит от того, что вы определяете как «когда мое приложение выходит». Были ли прочитанный через эту страницу для получения дополнительной информации: http://developer.android.com/training/basics/activity-lifecycle/starting.html
Я хотел бы предложить размещение кода в onPause()
Но всякий раз, когда onPause называется, он отключает bluetooth, и это дорогостоящая операция для включения, отправки данных для входа, возобновления и последующего отключения. Когда я подразумеваю вывод, я имею в виду, когда приложение удаляется из памяти. Например, когда вы удаляете его с фоновых приложений на странице – TameHog
Но разве он не будет разряжать батарею, чтобы оставить bluetooth? –
Один популярный метод для отслеживания деятельности OnPause() и onResume() обратные вызовы и имеют GlobalFlag как " appActivityStarted». Затем реализовать следующий алгоритм:
- в OnPause() установлен appActivityStarted = ложь и запустить таймер поток, который будет таймаут как после 5 секунд
- в onResume() устанавливают appActivityStarted = истинным и отменить таймер
- , если возникает тайм-аут (не был отменен) -> если (appActivityStarted == ложь), то вы должны делать то, что вам нужно сделать на приложение остановить
- не забудьте соответствующую синхронизацию на чтение/установка флага
Я широко протестировал этот подход и не обнаружил никаких проблем с ним.
- 1. Android: IllegalStateException: активность была разрушена
- 2. Активность была разрушена?
- 3. java.lang.IllegalStateException: Активность была разрушена
- 4. Активность была разрушена Exception
- 5. FragmentTabHost "Активность была разрушена"
- 6. java.lang.IllegalStateException: Активность была разрушена
- 7. IllegalStateException: активность была разрушена
- 8. Android Удалить уведомление, когда активность была разрушена или приложение разбито
- 9. Android Acitivty Cycle? Остается текст Когда активность разрушена, например Whatsapp?
- 10. Вложенные фрагменты Android - java.lang.IllegalStateException: активность была разрушена
- 11. IllegalStateException Активность была разрушена ошибка android
- 12. Android FragmentTransaction commit() - Активность была разрушена
- 13. Активность была разрушена на фрагментtransaction.commit
- 14. java.lang.IllegalStateException: Активность была разрушена Exception
- 15. ChildFragmentManager java.lang.IllegalStateException: активность была разрушена
- 16. изменение ориентации, FragmentTransaction, Активность была разрушена, WeakReference
- 17. Android: поток, похоже, не уничтожается, хотя активность разрушена
- 18. Fatal Exception: java.lang.IllegalStateException: активность была разрушена
- 19. Обнаруживает, когда Android убивает AsyncTask
- 20. Активность Android Перезагрузка Когда изменения ориентации
- 21. «Активность была разрушена» иногда при заполнении viewpager с фрагментами
- 22. Android ProgressBar, когда активность начинается
- 23. Fatal Exception: java.lang.IllegalStateException: Активность была разрушена с помощью LocalBroadcastManager
- 24. Вкладка ошибка фрагмента происходит и фрагмент родительской активность была разрушена
- 25. Android обнаруживает, когда DownloadManager закончил загрузку
- 26. обнаруживает, когда приложение использует разрешения ~ Android
- 27. Android обнаруживает клики, когда он не должен
- 28. Android обнаруживает, когда автомобиль замедляется и парковка
- 29. Деятельность всегда разрушена
- 30. .NET обнаруживает активность пользователя по всей системе
Это работает при условии, что существует одно действие. – dharms
@dcharms OP запросил действия (из названия), поэтому я не понимаю вашего комментария – greywolf82
OP хочет знать, когда приложение закрывается, а не активность. 'onPause' будет вызываться, когда пользователь переходит к другому действию, а не только когда приложение закрыто. – dharms