【发布时间】:2018-04-03 06:28:01
【问题描述】:
有没有人知道一些事件监听器来检测应用程序何时从后台返回到前台?我搜索了很多,但我没有找到这样的听众。任何其他解决方案表示赞赏。谢谢!
【问题讨论】:
标签: android
有没有人知道一些事件监听器来检测应用程序何时从后台返回到前台?我搜索了很多,但我没有找到这样的听众。任何其他解决方案表示赞赏。谢谢!
【问题讨论】:
标签: android
【讨论】:
我在 BaseActivity 中做了这样的事情
在 onResume 我检查 enterCount 是否等于 0,然后添加 enterCount 在 onPause 中我延迟 enterCount 减少 300ms,当 onCreate 不延迟两个长时似乎很好,或者我们可以在 onCreate 中做一些事情来避免第一次。
protected void onResume(){
int enterCount=GlobalManager.getInstance().getEnterCount();
if(enterCount==0){
//do some thing for first enter
}
GlobalManager.getInstance().increaseEnterCount();
}
protected void onPause(){
GlobalManager.getInstance().decreaseEnterCountDelay();
}
【讨论】:
我不确定您要做什么,但是如果您想区分这两个序列之间的区别:
您可以在 onPause() 中设置一个标志,然后在 onResume() 中检查该标志。
【讨论】:
从 Android 19 开始,您可以像这样在 Application 类的 onCreate() 中注册应用生命周期回调:
@Override
public void onCreate() {
super.onCreate();
registerActivityLifecycleCallbacks(new AppLifecycleCallback());
}
AppLifecycleCallback 如下所示:
class AppLifecycleCallback implements Application.ActivityLifecycleCallbacks {
private int numStarted = 0;
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
}
@Override
public void onActivityStarted(Activity activity) {
if (numStarted == 0) {
//app went to foreground
}
numStarted++;
}
@Override
public void onActivityResumed(Activity activity) {
}
@Override
public void onActivityPaused(Activity activity) {
}
@Override
public void onActivityStopped(Activity activity) {
numStarted--;
if (numStarted == 0) {
// app went to background
}
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
}
@Override
public void onActivityDestroyed(Activity activity) {
}
}
【讨论】: