Android API 18 реагирует на «прерывания» событием onStop - PullRequest
0 голосов
/ 29 августа 2018

Под «прерыванием» я подразумеваю что-то вроде приема вызова и ответа на него, помещения телефонного звонка поверх приложения, получения всплывающего сообщения WhatsApp поверх приложения и т. Д., Причем прерывание всегда вызывается внешним приложением .

Я тестировал свое приложение в API с 19 по 25, за исключением 20, и в этих API с этим прерыванием возникает либо событие onSaveInstance и onResume, либо просто событие onResume.

Но в API 18 это «прерывание» вызывает onStop (). Проблема заключается в том, что в моем приложении, если выполняются некоторые условия для этой функции onStop, приложение должно завершить работу, и достаточно неудачно, если в этой версии возникает «прерывание», когда возникают условия и приложение завершается.

Есть ли способ заставить приложение реагировать с OnSaveInstance, OnResume или просто onResume, как и другие версии? Или как-нибудь сказать приложению, что onStop () вызывается внешним приложением?

1 Ответ

0 голосов
/ 29 августа 2018

Не пытайтесь выяснить, что "вызвало" onStop(); фреймворк просто выполняет свою работу, держа вас в курсе действия Lifecycle . (Если вы обнаружите, что другие уровни API ведут себя по-разному, это может быть связано с тем, что они используют прозрачные наложения или что-то во время определенных «прерываний», и поэтому действие все еще технически отображается на экране).

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

Подумайте о том, чтобы пользователь нажал кнопку, когда пришло время «обработать ввод». Или, возможно, вы захотите перенести обработку на другой «слой» Activity Lifecycle ; до onResume()/onPause(), возможно, или onCreate()/onDestroy().

...