Вместо использования диспетчера активности есть простой трюк, который вы можете сделать с помощью кода.Если вы внимательно наблюдаете за циклом активности, поток между двумя действиями и передним планом на задний план выглядит следующим образом.Предположим, что 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, когда вы позже откроете приложение.