您的位置:首页 > 移动开发 > Android开发

Android多进程导致的问题

2016-05-09 19:43 351 查看
由于Dialer包含两个进程,会有以下问题:

1   Application会执行两次,要注意

2   Phone进程无法调用ContactManager查询通讯录信息

3   要将获取SharedPreference的MODE设置为:
MODE_MULTI_PROCESS 。其值为4(2.3以后有该属性)。如:   getSharedPreferences("test_aa", MODE_MULTI_PROCESS);.如果是使用MODE_PRIVATE这种模式,那么另一个进程中写入的值,将不会写到文件中。

由于在Application里注册了一些监听器,为了防止多进程注册多次,需要:

获取当前的进程名称:

private String getCurProcessName(Context context) {
int pid = android.os.Process.myPid();
ActivityManager mActivityManager = (ActivityManager) context
.getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningAppProcessInfo appProcess : mActivityManager
.getRunningAppProcesses()) {
if (appProcess.pid == pid) {
return appProcess.processName;
}
}
return "";
}


过滤掉其他进程:

if (!getPackageName().equals(getCurProcessName(this))) {
if (DialerConfig.DEBUG) LogUtil.d(TAG, "current process is not dialer");
return;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: