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



如何检测Android应用程序何时进入后台?onPause()或onUserLeaveHint()可以工作,但当方向改变或呈现另一个活动时也会调用。

标记的答案是OP问题的变通方法。对于我们这些正在寻找答案的人来说,你可以使用Android Architecture Components

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");
    }
}

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

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

您也可以通过编写以下代码来避免它到manifest

 <activity
      android:name=""
      android:configChanges="orientation|keyboardHidden|screenLayout|screenSize"
      android:label="@string/app_name" />

这个告诉系统,当方向改变或键盘隐藏或屏幕布局改变时,我将自己处理它,不需要重新创建它。

然后在on pause上写代码

试试这个

 @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()

相关内容

最新更新