android 前后台切换 回调
16lz
2021-12-04
方法一:
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"); }}
方法二:
@Overrideprotected void onStart() { super.onStart(); isCurrentRunningForeground = isRunningForeground(this); if (isCurrentRunningForeground) { Log.d(TAG, "切到前台 activity process"); }}@Overrideprotected 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 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;}
更多相关文章
- 浅谈Java中Collections.sort对List排序的两种方法
- Python list sort方法的具体使用
- python list.sort()根据多个关键字排序的方法实现
- android ViewPager 使用方法
- android Dialog无法获取窗口问题闪退
- Android(安卓)方法数超过64k限制的解决办法
- android的Services生命周期和使用方法
- Android(安卓)Context相关总结
- Android中onSaveInstanceState和onRestoreInstanceSt...