在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;
}