为什么在按下“主页”按钮时未调用我的活动的onPause方法?

时间:2018-06-05 16:53:55

标签: android android-activity

我有一个扩展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文档表明它是在应用程序发送到后台时调用的,但是在其他地方,我已经看到它建议它只在另一个应用程序启动时调用,所以可能解释了我所看到的。

如何找到我的应用发送到后台的时间?

0 个答案:

没有答案