Android如何提高后台进程存活率

Android如何提高后台进程存活率

1.应用进程停止运行原因

1.用户主动退出;
2.Crash异常退出;
3.系统通过杀掉进程回收内存。

2.应用进程优先级

在Android系统中,应用进程的优先级(oomadj值)分为以下等级,不同定义的进程系统采用了不同的管理机制。oomadj值从-17到16,oom_adj越大,进程优先级越低 常见的五个等级为:

前台进程(FOREGROUND_APP_ADJ=0);
可见进程(PERCEPTIBLE_APP_ADJ=2);
服务进程(SERVICE_ADJ=5);
后台进程(CACHED_APP_ADJ=8);
空进程(HIDDEN_APP_MIN_ADJ=15)。

当内存不足时,进程优先级低的(oom_adj越大的)、占内存大的App进程将会被优先杀掉,系统进程的规则如下:

1.进程优先级设置为PERSISTENT_PROC_ADJ(-12)被杀概率要低。
2.进程优先级HEAVY_WEIGHT_APP_ADJ(4),这种是Activity仅次于主进程,系统认为是高权重进程。
3.前台进程FORGROUND_APP_ADJ(0),前台进程,是指正在前台运行的应用,被杀概率不大。
4.进程中没有任何Activity存在会优先被杀。
5.空进程最容易被杀。

3.提高进程优先级进程保活

(1)网络连接

通过长连接心跳和进程保持通信,使进程保持活动状态,但如果系统内存非常紧张,也有可能被杀。

(2)利用系统现有机制

一般可以利用注册系统消息(AlarmReceiver,RootReceiver等),通过系统消息响应挂起进程。

(3)利用SyncAdapter

利用Android系统提供的账号同步机制SyncAdapter,实现进程优先级提高。SyncAdapter是一个系统服务,通过系统的定时器更新应用程序数据ContentProvider,因为Sync服务工作在独立进程,并且由操作系统调度,进程属于核心进程级别,系统不会杀掉,而使用了SyncAdapter的进程优先级本身也会提高,从而降低应用进程被杀的概率。

(4)此外,降低应用内存开销是减小进程被系统回收概率的一个非常有效的方法。

你可能感兴趣的:(Android进程管理,Android进阶)