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

Ags*_*nov 8 android minimize onpause android-activity

如何检测Android应用程序何时进入后台?onPause() 或 onUserLeaveHint() 有效,但也会在方向更改或呈现其他活动时调用。

Dor*_*ean 12

标记的答案是 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");
    }
}
Run Code Online (Sandbox Code Playgroud)

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


Joy*_*eph 3

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

您也可以通过将以下代码写入清单来避免这种情况

 <activity
      android:name=""
      android:configChanges="orientation|keyboardHidden|screenLayout|screenSize"
      android:label="@string/app_name" />
Run Code Online (Sandbox Code Playgroud)

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

然后在暂停时编写代码

  • 这可能会解决orientationChange问​​题,但是当您切换活动并且应用程序没有最小化时,onPause仍然会被调用......我仍在寻找答案。 (4认同)