由上面的生命周期可以得到一个结论就是页面a到b 或者b返回a 始终最后显示的页面的onstart 都先于 前面的页面onstop页面执行.
那么我们可以这样做: 在Application的onCreate中调用下面方法
private int activityCount = 0; private long firstTime = 0; private long lastTime = 0; private void registerActivityCallbacks() { registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() { @Override public void onActivityCreated(Activity activity, Bundle savedInstanceState) { } @Override public void onActivityStarted(final Activity activity) { //等于0时就是从后台或者打开app 这里SplashActivity就是你的启动页面如果不是启动页面就是后台进来的 if(0 == activityCount && !(activity instanceof SplashActivity)){ firstTime = System.currentTimeMillis(); if((firstTime - lastTime) > (2*1000)){ //超过2分钟在后台就进入解锁页面 } } activityCount++; } @Override public void onActivityResumed(Activity activity) { } @Override public void onActivityPaused(Activity activity) { } @Override public void onActivityStopped(Activity activity) { activityCount--; if(0 == activityCount){ lastTime = System.currentTimeMillis();//等于0时 就是从后台进来的 } } @Override public void onActivitySaveInstanceState(Activity activity, Bundle outState) { } @Override public void onActivityDestroyed(Activity activity) { } }); }