判断应用是否退到后台的方法,尤其是是用activity group的场景
public class MyActivityLifecycleCallbacks implements Application.ActivityLifecycleCallbacks {
private static int startedActivityCount;
private static boolean enterForeground;
private static boolean goBackground;
private static long sEnterBackgroundTime;
public static String activityName = "";
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
}
@Override
public void onActivityStarted(Activity activity) {
// not in activityGroup
if(activity != null && activity.getParent() == null){
startedActivityCount++;
enterForeground = 1 == startedActivityCount;
}
}
@Override
public void onActivityResumed(Activity activity) {
}
@Override
public void onActivityPaused(Activity activity) {
}
@Override
public void onActivityStopped(Activity activity) {
// not in activityGroup
if(activity != null && activity.getParent() == null){
startedActivityCount--;
goBackground = 0 == startedActivityCount;
}
if (goBackground) {
sEnterBackgroundTime = System.currentTimeMillis();
}
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
}
@Override
public void onActivityDestroyed(Activity activity) {
}
public static boolean isEnterForeground() {
return enterForeground;
}
public static boolean isGoBackground() {
return goBackground;
}
// 当计数为0时,说明应用进入后台
public static int getStartedActivityCount() {
return startedActivityCount;
}
}