如何检测Android应用程序何时最小化?

时间:2016-09-22 12:43:29

标签: android android-activity minimize onpause

如何检测Android应用何时进入后台? onPause()或onUserLeaveHint()可以正常工作,但在更改方向或显示其他活动时也会调用它。

3 个答案:

答案 0 :(得分:2)

试试这个

 @Override
    protected void onUserLeaveHint() 
   { 
        // When user presses home page
        Log.v(TAG, "Home Button Pressed");
        super.onUserLeaveHint();
    }

详细信息:https://developer.android.com/reference/android/app/Activity.html#onUserLeaveHint()

答案 1 :(得分:2)

如果方向改变,应用程序将再次调用生命周期,这意味着来自oncreate

您可以通过将以下内容写入清单

的代码来避免它
 <activity
      android:name=""
      android:configChanges="orientation|keyboardHidden|screenLayout|screenSize"
      android:label="@string/app_name" />

这告诉系统当方向改变或者keyboardHidden或screenLayout改变时,我将自己处理它,无需重新创建它。

然后在暂停时编写代码

答案 2 :(得分:1)

已标记答案是针对OP问题的解决方法。 对于我们其他正在寻找答案的人,您可以使用 Android体系结构组件

import android.arch.lifecycle.LifecycleObserver;

class OurApplication extends Application implements LifecycleObserver {

    @Override
    public void onCreate() {
        super.onCreate();
        ProcessLifecycleOwner.get().getLifecycle().addObserver(this);
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
    public void onAppBackgrounded() {
        Logger.localLog("APP BACKGROUNDED");
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_START)
    public void onAppForegrounded() {
        Logger.localLog("APP FOREGROUNDED");
    }
}

,并记住要更新清单文件。为android:name=".OurApplication"标签设置<application>属性