【android Contacts/Acore进程常常被Kill,导致联系人开机后丢失怎么办()】不操千曲而后晓声,观千剑而后识器。这篇文章主要讲述android Contacts/Acore进程常常被Kill,导致联系人开机后丢失怎么办?相关的知识,希望能为你提供帮助。
Contacts/Acore进程,在内存较少和开机进程过多的情况下会常常被 ActivityManager Kill 掉。
导致Sim卡联系人开机后未导入或者仅仅导入一部分,造成联系人丢失的现象,可是又一次开机后能够恢复正常。
遇到这种问题能够採用下面方法提供Contacts/Acore进程的优先级,减少被ActivityManager 杀掉的概率。
方法1:
提高进程优先级
startForeground(1, new Notification());
减少进程优先级
stopForeground(true);
NOTICE:
这种方法能够将相应AP的ADJ暂时提高到2。
方法2:
找到这个进程相应的androidMannifest.xml文件,在当中加入属性『android:persistent="true"』,
这样能够将该进程设置为常驻内存进程,就能够减少被Kill的概率。
以Acore进程为例。
在 /package/providers/ContactsProvider/AndroidMannifest.xml 文件里添加一行『android:persistent="true"』
详细改动示比例如以下:
<
application android:process="android.process.acore"
android:label="@string/app_label"
android:icon="@drawable/app_icon"
android:allowBackup="false"
android:persistent="true" <
!--新添加代码。保证acore进程不被ActivityManager杀死-->
>
NOTICE:
这种方法能够将相应AP的ADJ暂时提高到2。
解决发生JE问题(必须合入):
CallLogProvider.java
(Line1000)
public static final void notifyNewCallsCount(SQLiteDatabase db, Context context) {
... ...
Log.i(TAG, "[notifyNewCallsCount] newCallsCount = " + newCallsCount);
//send count=0 to clear the unread icon
if (newCallsCount >
= 0) {
Intent newIntent = new Intent(Intent.MTK_ACTION_UNREAD_CHANGED);
newIntent.putExtra(Intent.MTK_EXTRA_UNREAD_NUMBER, newCallsCount);
newIntent.putExtra(Intent.MTK_EXTRA_UNREAD_COMPONENT, new ComponentName(Constants.CONTACTS_PACKAGE,
Constants.CONTACTS_DIALTACTS_ACTIVITY));
// New add for fixed JE
newIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT);
// End
context.sendBroadcast(newIntent);
... ...
推荐阅读
- win7旗舰版32位硬盘版安装图文详细教程
- app生命周期之即将关闭
- Android实战Android中处理崩溃异常
- Android 权限表
- 安卓自己定义基于onDraw的随意动画(不不过平移/旋转/缩放/alpha)!
- System Center 2012 - App Controller 安装语言包
- Android进程注入
- android 性能测试adb命令
- Android6.0指纹识别开发