android 判断进程是否处于前台
生活随笔
收集整理的這篇文章主要介紹了
android 判断进程是否处于前台
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
今天,簡單講講如何判斷android 的進程是否處于前臺。
1、通過RunningTaskInfo類判斷(需要額外權限):
/***判斷當前應用程序處于前臺還是后臺*/public static boolean isApplicationBroughtToBackground(final Context context) {ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);List<RunningTaskInfo> tasks = am.getRunningTasks(1);if (!tasks.isEmpty()) {ComponentName topActivity = tasks.get(0).topActivity;if (!topActivity.getPackageName().equals(context.getPackageName())) {return true;}}return false;}
需要在AndroidMenitfest.xml文件中添加以下權限
<uses-permission android:name="android.permission.GET_TASKS" />?
2、通過RunningAppProcessInfo類判斷(不需要額外權限):
//當前應用是否處于前臺private boolean isForeground(Context context) {if (context != null) {ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);List<ActivityManager.RunningAppProcessInfo> processes = activityManager.getRunningAppProcesses();for (ActivityManager.RunningAppProcessInfo processInfo: processes) {if (processInfo.processName.equals(context.getPackageName())) {if (processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {return true;}}}}return false;}可以根據importance的不同來判斷前臺或后臺 RunningAppProcessInfo 里面的常量IMOPORTANCE就是上面所說的前臺后臺,其實IMOPORTANCE是表示這個app進程的重要性,因為系統回收時候,會根據IMOPORTANCE來回收進程的。具體可以去看文檔。。public static final int IMPORTANCE_BACKGROUND = 400//后臺public static final int IMPORTANCE_EMPTY = 500//空進程public static final int IMPORTANCE_FOREGROUND = 100//在屏幕最前端、可獲取到焦點 可理解為Activity生命周期的OnResume();public static final int IMPORTANCE_SERVICE = 300//在服務中public static final int IMPORTANCE_VISIBLE = 200//在屏幕前端、獲取不到焦點可理解為Activity生命周期的OnStart();但上面的方法有的機型不支持,第一種方法還是比較靠譜的,但需要一個權限。具體使用還是看大家自己。版本4.0以上,可以使用ActivityLifecycleif (Build.VERSION.SDK_INT >= 14) {lifecycle = new SimpleActivityLifecycle();registerActivityLifecycleCallbacks(lifecycle);public class SimpleActivityLifecycle implements Application.ActivityLifecycleCallbacks {private boolean isForeground = false;//應用是否處于前端@Overridepublic void onActivityCreated(Activity activity, Bundle savedInstanceState) {}@Overridepublic void onActivityStarted(Activity activity) {}@Overridepublic void onActivityResumed(Activity activity) {isForeground = true;}@Overridepublic void onActivityPaused(Activity activity) {isForeground = false;}@Overridepublic void onActivityStopped(Activity activity) {}@Overridepublic void onActivitySaveInstanceState(Activity activity, Bundle outState) {}@Overridepublic void onActivityDestroyed(Activity activity) {}public boolean isForeground() {return isForeground;} }
android 判斷進程是否處于前臺就講完了。
就這么簡單。
總結
以上是生活随笔為你收集整理的android 判断进程是否处于前台的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 解决华为 Sliding
- 下一篇: android TextView设置字体