在app開發中,往往因爲一些需求會開啓多個進程去完成一些後臺任務,如消息通知,消息推送,這個時候就需要判斷app中哪些數據是在主線程中運行,哪些是在後臺進程中運行的,那麼在appcation裏調用這段代碼來判斷app是否運行在主線程中 ,同時初始化主線程中需要用到的數據,就不會和後臺進程產生衝突了
private boolean isMainProcess() {
ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);//app運行狀態管理權限// List<ActivityManager.RunningAppProcessInfo> info= am.getRunningAppProcesses();
int pid = android.os.Process.myPid();//當前運行時的進程id
Log.d(TAG,"pid="+pid);
String packageName = getPackageName();
for (ActivityManager.RunningAppProcessInfo info : am.getRunningAppProcesses()) {
Log.d(TAG,"info.pid="+info.pid);
if (info.pid == pid && packageName.equals(info.processName)) {
return true;
}
}
return false;
}