почему onDestroy () вызывается при переключении на другое приложение - PullRequest
0 голосов
/ 22 сентября 2018

Хорошо, я прочитал раздел о жизненном цикле активности , но кое-что я до сих пор не понимаю.Почему в моем приложении вызывается onDestroy(), когда я переключаюсь на другое приложение, которое запускается на моем телефоне, или когда я нажимаю кнопку «Домой».

Из того, что я прочитал, onPause() вызывается, когда приложение теряет фокус.

Система вызывает этот метод как первый признак того, что пользователь покидает вашу деятельность (хотяэто не всегда означает, что деятельность разрушается);это указывает на то, что активность больше не находится на переднем плане (хотя она все еще может быть видимой, если пользователь находится в многооконном режиме).Используйте метод onPause () для приостановки или настройки операций, которые не должны продолжаться (или должны продолжаться в режиме модерации), когда действие находится в состоянии «Приостановлено» и ожидается, что вы вскоре возобновите его.

OnStop() Я также получаю:

Когда ваша активность больше не видна пользователю, она переходит в состояние «Остановлено», и система вызывает обратный вызов onStop ().Это может произойти, например, когда вновь запущенное действие охватывает весь экран.Система может также вызвать onStop (), когда действие завершится и должно быть завершено.

Однако я не понимаю, почему также вызывается onDestroy().

onDestroy () вызывается до уничтожения действия.Система вызывает этот обратный вызов либо потому, что: 1) действие завершается (из-за того, что пользователь полностью отклонил действие, либо из-за вызова final () для действия), либо 2) система временно уничтожает действие из-за конфигурацииизменить (например, поворот устройства или многооконный режим).

Прежде всего, я не заканчиваю свое приложение и не звоню finish().Во-вторых, нет никаких изменений в конфигурации, о которых я знаю.

Надеюсь, что кто-то может помочь.

К вашему сведению: Мое приложение расширяется Activity, использует несколько Threads, имеет класс, который расширяет SurfaceView и реализует SurfaceHolder.Callback, использует IntentService и ContentProvider.Кроме этого, ничего особенного.

PS: Когда я выключаю экран, onDestroy() не вызывается.

PPS: IЯ не ищу вонючий обходной путь.Я хотел бы понять, что происходит и почему.

Ответы [ 2 ]

0 голосов
/ 23 сентября 2018

Оказывается, я использовал флаг android:noHistory в своем манифесте.Благодаря этой записи я смог решить мою проблему.Спасибо @Alexis Contour!

0 голосов
/ 22 сентября 2018

Я не уверен, что это поможет, но насколько я знаю, когда у Android не хватает памяти, он будет автоматически запускать метод onDestory любого действия, которое не отображается на экране.

...