Android进程保活和拉活方案总结

本文详细介绍了Android进程的类型、优先级及其管理机制,包括Zygote进程、App进程、Native进程等。分析了系统Kill进程的规则,并探讨了不同类型的进程在内存不足时的存活顺序。重点讨论了Android应用保活和拉活的方案,对于理解进程管理和优化应用性能具有指导意义。
摘要由CSDN通过智能技术生成

1、问题

系统为什么会Kill进程?Kill进程为什么是自己的?有什么规则?

在内存不足时,而其它更急于为用户提供服务的进程又需要内存时,Android可能会决定在某一时刻关闭某个进程。决定终止哪个进程,系统根据进程的优先级(oom_adj),根据内存的紧张程度,先把优先级低(oom_adj值大)的进程kill,以保证其它进程有足够的内存使用。

2、Android进程

2.1 Zygote进程

Android所有进程包括SystemServer都是由此进程Fork。

2.2 App进程

由Zygote进程Fork出来,并受AMS(ActivityManagerSerivce)管理。进程名以包名命名。

2.3 App辅助进程

允许App有多个进程,在AndroidManifest.xml的android:process属性设置,进程名格式packageName:name。

2.4 Native进程

通过C/C++开发的程序,也是由Zygote进程Fork出来,但它不受AMS管理,自由度更大。

3、Android进程优先级

进程的优先级是在com.android.server.am.ProcessList类里边定义

主要分以下几个优先级

UNKNOWN_ADJ = 16
预留的最低级别,一般对于缓存的进程才有可能设置成这个级别。

CACHED_APP_MAX_ADJ = 15
缓存进程,空进程,在内存不足的情况下就会优先被kill。

CACHED_APP_MIN_ADJ = 9
缓存进程,也就是空进程

SERVICE_B_ADJ = 8
不活跃的进程

PREVIOUS_APP_ADJ = 7
切换进程

HOME_APP_ADJ = 6
与Home交互的进程

SERVICE_ADJ = 5
有Service的进程

HEAVY_WEIGHT_APP_ADJ = 4
高权重进程

BACKUP_APP_ADJ = 3
正在备份的进程

PERCEPTIBLE_APP_ADJ = 2
可感知的进程,比如那种播放音乐

VISIBLE_APP_ADJ = 1
可见进程

FOREGROUND_APP_ADJ = 0
前台进程

PERSISTENT_SERVICE_ADJ =

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值