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);

... ...

时间: 2024-10-12 17:51:41

android Contacts/Acore进程经常被Kill,导致联系人开机后丢失怎么办?的相关文章

android Contacts/Acore进程常常被Kill,导致联系人开机后丢失怎么办?

Contacts/Acore进程,在内存较少和开机进程过多的情况下会常常被 ActivityManager Kill 掉. 导致Sim卡联系人开机后未导入或者仅仅导入一部分,造成联系人丢失的现象,可是又一次开机后能够恢复正常. 遇到这种问题能够採用下面方法提供Contacts/Acore进程的优先级,减少被ActivityManager 杀掉的概率. 方法1: 提高进程优先级 startForeground(1, new Notification()); 减少进程优先级 stopForegrou

保持Service不被Kill掉的方法--双Service守护 &amp;&amp; Android实现双进程守护

本文分为两个部分,第一部分为双Service守护,第二部分为双进程守护 第一部分: 一.Service简介:Java.lang.Object ?Android.content.Context  ?android.content.ContextWrapper  ?android.app.Service Service是应用程序Application的一个组件(component).它的作用有两点:1.用来提供一个长期在后台运行并且不与用户交互的操作,2.也可以为其他应用程序提供服务.Service

升级后开机就提示“android.process.acore”停止执行 --分析 解决方式

OTA升级的,升级引发的全部问题都是能够解释的,有的能解决,有的不能解决. 一个项目报了这个问题. 升级后开机就提示"android.process.acore"停止执行 抓取 adb log 看到了 以下的这个 fatal  的log 11-06 14:40:33.633  3827  3827 E AndroidRuntime: FATAL EXCEPTION: main 11-06 14:40:33.633  3827  3827 E AndroidRuntime: Proces

升级后开机就提示“android.process.acore”停止运行 --分析 解决方案

OTA升级的,升级引发的所有问题都是可以解释的,有的能解决,有的不能解决. 一个项目报了这个问题.升级后开机就提示"android.process.acore"停止运行 抓取 adb log 看到了 下面的这个 fatal  的log 11-06 14:40:33.633  3827  3827 E AndroidRuntime: FATAL EXCEPTION: main 11-06 14:40:33.633  3827  3827 E AndroidRuntime: Process

Android MarsDaemon实现进程及Service常驻

前段时间.就讨论过关于怎样让Service常驻于内存而不被杀死,最后的结论就是使用JNI实现守护进程,可是不得不说的是,在没有改动系统源代码的情况下,想真正实现杀不死服务,是一件非常难的事情.眼下除了白名单的方式.也好像没有发现有一款APP能做到无论怎么搞它都能自己主动重新启动... 近期在GitHub上发现了一个比較有意思的轻量级库:MarsDaemon,进行一些简单的配置,就能够实如今android上实现进程常驻,在系统强杀下或360安全卫士等软件下,都无法真正杀死进程. 当然了.在华为的p

Android中的进程和线程,-&gt;View.post(Runnable) -&gt;AsyncTask

写在前面的话 一个Android应用就是一个Linux进程,每个应用在各自的进程中运行,互不干扰,比较安全. 一个应用对应一个主线程,就是通常所说的UI线程,android遵守的就是单线程模型,所以说Ui操作不是线程安全的并且这些操作必须在UI线程中执行. 本文是对官方文档的翻译,原文链接:https://developer.android.com/guide/components/processes-and-threads.html 概述 当某个应用组件启动且该应用没有运行其他任何组件时,An

Android中的进程和线程

写在前面的话 一个Android应用就是一个Linux进程,每个应用在各自的进程中运行,互不干扰,比较安全. 一个应用对应一个主线程,就是通常所说的UI线程,android遵守的就是单线程模型,所以说Ui操作不是线程安全的并且这些操作必须在UI线程中执行. 本文是对官方文档的翻译,原文链接:https://developer.android.com/guide/components/processes-and-threads.html 概述 当某个应用组件启动且该应用没有运行其他任何组件时,An

Android 之 IPC 进程通信全解析

Android 之 IPC 进程通信全解析 本篇博客的框架 什么是IPC IPC(Inter-Process Communication) 进程间通信,是指两个不同进程之间数据交换的过程. 在明确其之前,需要先搞懂几个概念: 线程:CPU可调度的最小单位,是程序执行流的最小单元:线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源. 进程: 一个执行单元,在PC 和移动设备上一

Android之rild进程启动源码分析

Android 电话系统框架介绍 在android系统中rild运行在AP上,AP上的应用通过rild发送AT指令给BP,BP接收到信息后又通过rild传送给AP.AP与BP之间有两种通信方式: 1.Solicited Response:Ap向Bp发送请求,Bp给Ap发送回复,该类型的AT指令及其回调函数以数组的形式存放在Ril_commands.h文件中: {数组中的索引号,请求回调函数,响应回调函数} [plain] view plaincopy {0, NULL, NULL},