我有一个扩展AppCompatActivity
的Android活动,我感到非常困惑,因为当我在手机上测试它(Android 7.1.1上的索尼Xperia,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
- 都会在此时突然发生。
这对我来说是一个问题,因为活动相当耗费电池,如果用户将电池放在后台,我不想浪费用户的电池。此外,它似乎没有从背景中恢复得很好,因此取消它似乎更容易。
关于这一点有各种各样的问题(this might be closest),但它们似乎都没有涵盖这种情况 - onPause
文档表明它是在应用程序发送到后台时调用的,但是在其他地方,我已经看到它建议它只在另一个应用程序启动时调用,所以可能解释了我所看到的。
如何找到我的应用发送到后台的时间?