Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android Contacts/Acore進程經常被Kill,導致聯系人開機後丟失怎麼辦?

android Contacts/Acore進程經常被Kill,導致聯系人開機後丟失怎麼辦?

編輯:關於Android編程

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"』
具體修改示例如下:
android:label="@string/app_label"
android:icon="@drawable/app_icon"
android:allowBackup="false"
android:persistent="true"
>
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);
... ...
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved