【发布时间】:2017-01-31 01:16:18
【问题描述】:
如何检测 Android 应用何时进入后台? onPause() 或 onUserLeaveHint() 有效,但在方向改变或出现其他活动时也会调用。
【问题讨论】:
-
您好,如果您能根据需要更新正确答案,我将不胜感激。
标签: android android-activity minimize onpause
如何检测 Android 应用何时进入后台? onPause() 或 onUserLeaveHint() 有效,但在方向改变或出现其他活动时也会调用。
【问题讨论】:
标签: android android-activity minimize onpause
标记的答案是 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");
}
}
并记得更新清单文件。为<application> 标签设置android:name=".OurApplication" 属性
【讨论】:
implementation 'android.arch.lifecycle:extensions:1.1.1'
如果方向发生变化,应用程序将再次调用整个生命周期,这意味着从 oncreate 开始
您也可以通过将以下代码写入清单来避免它
<activity
android:name=""
android:configChanges="orientation|keyboardHidden|screenLayout|screenSize"
android:label="@string/app_name" />
这告诉系统,当方向改变或keyboardHidden或screenLayout改变时,我将自行处理,无需重新创建。
然后在暂停时编写代码
【讨论】:
试试这个
@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()
【讨论】: