android 防止应用被lowmemorykiller杀掉

本文介绍了如何防止Android应用程序在系统内存紧张时被lowmemorykiller机制杀死。通过理解adj值的计算过程,可以尝试在系统更新adj值时,为自己的应用设置较小的adj值或者在写入adj值时过滤特定应用。主要方法涉及修改AMS中的adj值计算逻辑,当检测到特定包名时,将adj值设为-1,以提高应用的生存率。
摘要由CSDN通过智能技术生成

网上关于lowmemorykiller的文章一大把,总结一下,系统会不断更新进程的adj值,然后在内存紧张的情况下,adj越大的应用越可能被杀,那么我们要防止被杀,要么是给我们的应用设置比较小的adj值,要么是要杀的时候过滤我们的应用,因为杀进程是比较偏底层做的,不太熟悉.所以优先考虑,系统计算adj值的时候直接给我们的应用adj值赋为-1.

  直接说方法,系统计算过adj之后会通过下属方法写adj的值,我们只要在其中判断我们有应用的包名,然后更改adj的值就可以,该方法在AMS中
 


private final boolean applyOomAdjLocked(ProcessRecord app, boolean doingAll, long now,
            long nowElapsed) {
        boolean success = true;
        int changes = 0;
 
        if (app.curAdj != app.setAdj) {
        	String[] packages = app.getPackageList();
        	if(packages != null){
        		for(String p : packages){
        			if(p.equals("你的包名")){
        				//android.util.Log.d(TAG_OOM_ADJ, "set usettings adj -1");
        				app.curAdj = -1;
        				break;
        			}
 
        		}
        	}
            ProcessList.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值