方法一:
public class MyApplication extends Application implements Application.ActivityLifecycleCallbacks { private String TAG="MyApplication"; @Override public void onCreate() { super.onCreate(); registerActivityLifecycleCallbacks(this); } public int count = 0; @Override public void onActivityStopped(Activity activity) { Log.v(TAG, activity + "onActivityStopped"); count--; if (count == 0) { Log.v(TAG, "切到后台"); } } @Override public void onActivityStarted(Activity activity) { Log.v(TAG, activity + "onActivityStarted"); if (count == 0) { Log.v(TAG, "切到前台"); } count++; } @Override public void onActivitySaveInstanceState(Activity activity, Bundle outState) { Log.v(TAG, activity + "onActivitySaveInstanceState"); } @Override public void onActivityResumed(Activity activity) { Log.v(TAG, activity + "onActivityResumed"); } @Override public void onActivityPaused(Activity activity) { Log.v(TAG, activity + "onActivityPaused"); } @Override public void onActivityDestroyed(Activity activity) { Log.v(TAG, activity + "onActivityDestroyed"); } @Override public void onActivityCreated(Activity activity, Bundle savedInstanceState) { Log.v(TAG, activity + "onActivityCreated"); } }
方法二:
@Override protected void onStart() { super.onStart(); isCurrentRunningForeground = isRunningForeground(this); if (isCurrentRunningForeground) { Log.d(TAG, "切到前台 activity process"); } } @Override protected void onStop() { super.onStop(); isCurrentRunningForeground = isRunningForeground(this); if (!isCurrentRunningForeground) { Log.d(TAG, "切到后台 activity process"); } } public boolean isRunningForeground(Context context) { ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); List<ActivityManager.RunningAppProcessInfo> appProcessInfos = activityManager.getRunningAppProcesses(); // 枚举进程 for (ActivityManager.RunningAppProcessInfo appProcessInfo : appProcessInfos) { if (appProcessInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) { if (appProcessInfo.processName.equals(context.getApplicationInfo().processName)) { Log.d(TAG, "切到前台"); return true; } } } Log.d(TAG, "切到后台"); return false; }