如何检测Android应用程序何时进入后台? onPause()或onUserLeaveHint()可以工作,但在更改方向或显示其他活动时也会调用它。
如果方向改变,应用程序将再次调用生命周期,这意味着从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()
明确的答案是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>
属性