Это полезно только в том случае, если вы хотите выполнить какое-либо действие, только когда ваша деятельность начинается и где вы хотите проверить, находится ли приложение на переднем плане или в фоне.
Вместо использования диспетчера активности есть простой трюкчто вы можете сделать с помощью кода.Если вы внимательно наблюдаете за циклом активности, поток между двумя действиями и передним планом на задний план выглядит следующим образом.Предположим, что A и B являются двумя действиями.
Когда переход от A к B: 1. onPause () для A вызывается 2. onResume () для B вызывается 3. onStop () для A вызывается, когда Bполностью возобновляется
Когда приложение переходит в фоновый режим: 1. onPause () для A вызывается 2. onStop () для A вызывается
Вы можете обнаружить фоновое событие, просто поставив флагв действии.
Создайте абстрактное действие и расширите его от других ваших действий, чтобы вам не пришлось копировать, вставлять код для всех других действий, где бы вам ни понадобилось фоновое событие.
В абстрактном действиисоздать флаг isAppInBackground.
В методе onCreate (): isAppInBackground = false;
В методе onPause (): isAppInBackground = false;
В методе onStop (): isAppInBackground =true;
Вам просто нужно проверить свой onResume (), если isAppInBackground имеет значение true.n после того, как вы проверите свой флаг, затем снова установите isAppInBackground = false
Для перехода между двумя действиями, так как onSTop () первого всегда будет вызываться после возобновления второго действия, флаг никогда не будет истинным, а когда приложение находится в фоновом режиме, onStop() активности будет вызываться сразу после onPause, и, следовательно, флаг будет иметь значение true, когда вы позже откроете приложение.
Однако в этом подходе есть еще один сценарий.Если какой-либо экран вашего приложения уже открыт, и вы переводите мобильный телефон в режим ожидания, то через некоторое время мобильный телефон перейдет в спящий режим, а когда вы разблокируете мобильный телефон, он будет обработан в фоновом режиме.