У меня есть активность Android, которая расширяется AppCompatActivity
, и я очень растерялся, потому что, когда я тестирую ее на своем телефоне (Sony Xperia на Android 7.1.1, API 25), метод onPause
не вызывается, когдаНажата кнопка «Домой».
На самом деле все выглядит так, как будто нет События жизненного цикла действия запускаются приложением, которое помещается в фоновый режим.У меня есть следующее в моей деятельности:
@Override
public void onPause()
{
super.onPause();
Log.i(TAG, "Pause the Activity.");
}
@Override
public void onStop() {
super.onStop();
Log.i(TAG, "Stop the Activity");
forceClose();
}
@Override
protected void onUserLeaveHint(){
super.onUserLeaveHint();
Log.i(TAG, "User leaving the Activity");
forceClose();
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (!hasFocus)
{
Log.i(TAG, "Window focus changed- Activity no longer has focus.");
}
}
Когда я нажимаю кнопку «Домой», ни один из них не вызывается.На самом деле в моем коде ничего не происходит, мое приложение просто исчезает из виду.Если я запускаю другое приложение, все вызовы жизненного цикла Activity, включая onPause
, внезапно происходят в этот момент.
Это проблема для меня, потому что работа довольно емкая, и я не хочу тратить батарею пользователя, если он поставил ее в фоновом режиме.Кроме того, кажется, что он плохо восстанавливается после того, как был основан, поэтому кажется, что его проще отменить.
Есть несколько вопросов по этому поводу на SO ( это может быть ближе всего ), но ни один изкажется, что они охватывают этот сценарий - документация onPause
предполагает, что он вызывается, когда приложение отправляется в фоновый режим, но в других местах, которые я видел, он предполагает, что он вызывается только при запуске другого приложения, поэтому, возможно, это объясняетчто я вижу.
Как я могу найти, когда мое приложение было отправлено в фоновом режиме?