Хорошо, я прочитал раздел о жизненном цикле активности , но кое-что я до сих пор не понимаю.Почему в моем приложении вызывается onDestroy()
, когда я переключаюсь на другое приложение, которое запускается на моем телефоне, или когда я нажимаю кнопку «Домой».
Из того, что я прочитал, onPause()
вызывается, когда приложение теряет фокус.
Система вызывает этот метод как первый признак того, что пользователь покидает вашу деятельность (хотяэто не всегда означает, что деятельность разрушается);это указывает на то, что активность больше не находится на переднем плане (хотя она все еще может быть видимой, если пользователь находится в многооконном режиме).Используйте метод onPause () для приостановки или настройки операций, которые не должны продолжаться (или должны продолжаться в режиме модерации), когда действие находится в состоянии «Приостановлено» и ожидается, что вы вскоре возобновите его.
OnStop()
Я также получаю:
Когда ваша активность больше не видна пользователю, она переходит в состояние «Остановлено», и система вызывает обратный вызов onStop ().Это может произойти, например, когда вновь запущенное действие охватывает весь экран.Система может также вызвать onStop (), когда действие завершится и должно быть завершено.
Однако я не понимаю, почему также вызывается onDestroy()
.
onDestroy () вызывается до уничтожения действия.Система вызывает этот обратный вызов либо потому, что: 1) действие завершается (из-за того, что пользователь полностью отклонил действие, либо из-за вызова final () для действия), либо 2) система временно уничтожает действие из-за конфигурацииизменить (например, поворот устройства или многооконный режим).
Прежде всего, я не заканчиваю свое приложение и не звоню finish()
.Во-вторых, нет никаких изменений в конфигурации, о которых я знаю.
Надеюсь, что кто-то может помочь.
К вашему сведению: Мое приложение расширяется Activity
, использует несколько Threads
, имеет класс, который расширяет SurfaceView
и реализует SurfaceHolder.Callback
, использует IntentService
и ContentProvider
.Кроме этого, ничего особенного.
PS: Когда я выключаю экран, onDestroy()
не вызывается.
PPS: IЯ не ищу вонючий обходной путь.Я хотел бы понять, что происходит и почему.