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里注册了一些监听器,为了防止多进程注册多次,需要:
获取当前的进程名称:
过滤掉其他进程:
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; }
相关文章推荐
- AndroidStudio 快捷键大全
- Android音频系统之音频框架
- Android 图片加载类一 ImageLoader
- android canvas与图层的关系
- Android 中的应用组件--Service
- android简单应用(一)
- 1、fragment的使用封装(上)
- android TextView.setText
- Attribute is missing the Android namespace prefix
- Android 中的应用组件之----Content Provider (跨进程私有数据共享)
- Android Studio下jni应用
- 2、fragment的使用封装(下)
- 通用Adapter的尝试
- android studio 之常见错误
- Android四大组件的介绍
- Android EditText 禁止输入表情
- Android audio HAL详解(一)
- Notification通知的详解
- android中cursor对象的使用
- 【框架】AndroidAnnotations安卓注解