android 前后台切换 回调
16lz
2021-01-23
方法一:
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;}
更多相关文章
- Android 方法数超过64k限制的解决办法
- android的Services生命周期和使用方法
- Android onClick事件三种实现方法
- android学习——android 常见的错误 和 解决方法
- Android详细的对话框AlertDialog.Builder使用方法
- Android Studio 3.0 gradle提示太老 解决方法
- Android 中自定义控件和属性(attr.xml,declare-styleable,TypedA
- [Android]LayoutInflater的inflate方法半详解
- Android与Unity交互调用mUnityPlayer.quit()方法退出返回上一个A