有一种方法可以设置app永远不会被kill,AndroidManifest.xml 中添加: android:persistent="true" 适用于放在/system/app下的app 设置后app提升为系统核心级别,任何情况下不会被kill掉, settings->applications里面也会屏蔽掉stop操作, 设置前 Proc#19:adj=svc/B4067b028255:com.xxx.xxx/10001(started-services) #cat/proc/255/oom_adj 4 设置后 PERS#19:adj=core/F406291f0155:com.xxx.xxx/10001(fixed) #cat/proc/155/oom_adj -12

lowmemorykiller的操作规则比如为

write /sys/module/lowmemorykiller/parameters/adj 0,1,2,4,7,15

write /sys/module/lowmemorykiller/parameters/minfree 2048,3072,4096,6144,7168,8192

可以看到,设置persistent后, oom_adj=-12,永远没有机会被lowmemorykiller处理

android:persistent
Whether or not the application should remain running at all times — "true" if it should, and "false" if not. The default value is "false". Applications should not normally set this flag; persistence mode is intended only for certain system applications

代码

[java] view plain copy
  1. ActivityManagerService.java
  2. finalProcessRecordaddAppLocked(ApplicationInfoinfo){
  3. ProcessRecordapp=getProcessRecordLocked(info.processName,info.uid);
  4. if(app==null){
  5. app=newProcessRecordLocked(null,info,null);
  6. mProcessNames.put(info.processName,info.uid,app);
  7. updateLruProcessLocked(app,true,true);
  8. }
  9. if((info.flags&(ApplicationInfo.FLAG_SYSTEM|ApplicationInfo.FLAG_PERSISTENT))
  10. ==(ApplicationInfo.FLAG_SYSTEM|ApplicationInfo.FLAG_PERSISTENT)){
  11. app.persistent=true;
  12. app.maxAdj=CORE_SERVER_ADJ;
  13. }
  14. if(app.thread==null&&mPersistentStartingProcesses.indexOf(app)<0){
  15. mPersistentStartingProcesses.add(app);
  16. startProcessLocked(app,"addedapplication",app.processName);
  17. }
  18. returnapp;
  19. }


可以看到同时符合FLAG_SYSTEM(/system/app目录)及FLAG_PERSISTENT(android:persistent="true")

的app,设置app.maxAdj = CORE_SERVER_ADJ(-12),而adj=-12不会被lowmemorykiller处理

更多相关文章

  1. 在Android(安卓)Studio上测试运行,Unity发布成Android包的环境搭
  2. android崩溃日志保存sdcard打开并发送到email
  3. Android的语言设置(二)
  4. Android(安卓)蓝牙操作详解
  5. Android(安卓)Studio --> Gradle Build设置自动
  6. Android(安卓)查询数据库时 项目出现 OOM (不断引发GC)
  7. Android修改百度地图的显示范围的大小
  8. Android(安卓)Button setTextColor()参数调用分析
  9. 2019-11-22 Notification(通知服务)的实例

随机推荐

  1. Android 技术博客(3):android 悬浮窗菜单,可
  2. 高德地图Android,绘制自定义定位蓝点、mar
  3. Android 学习记录-加载菜单
  4. Android Camera框架分析
  5. Android 仿 Iphone 自定义滚条视图(wheel
  6. Android实现圆角照片和圆形照片
  7. Android LinearLayout和FrameLayout 登陆
  8. Android中颜色值列表
  9. 安卓shape属性详细介绍
  10. Android(安卓)的 Java 8 支持