背景:
Android系统核心App和Service需要在Android开机期间一直后台运行,如果被杀死会立即重启。这个功能的实现是在App和Service的AndroidManifest.xml添加android:persistent="true"属性控制。但是Android 8.0之后含有Persist的App和Service禁止升级。如果我们把服务相关的App和Service设置android:persistent="true"属性就无法升级,如果不添加android:persistent="true"属性就无法保证一直运行会影响服务功能。所以需要设计一种新的机制保证后台服务不仅可以一直运行而且可以正常升级。
1.3 类型
调研报告为技术可行性调研,从方案对系统稳定性的影响和对需要保活的App和Service的综合讨论,后台需保活Service和App 启动由APP Store和Launcher完成,保活和升级等其他功能由Framework完成。
1.4 定义
AMS(ActivityManagerService):是Android Framework层的核心系统服务之一,负责App和Service的启动、删除和保活等工作。
PMS(PackageManagerService):是Android Framework层的核心系统服务之一,主要用于APP和Service升级和权限管理等功能。
APS(App Store和Launcher ):主要用于启动需要保活的后台Service和App。
Flag(persist.keep.alive):True表示保活后台Service,False表示不保活后台Service。
KAS:需要被保活的后台App和Service。
1.5 参考资料

说明:
1、列出要用到的参考资料(网站、书籍、已有项目资产)
2. 调研过程
2.1 思路介绍
保活思路借鉴了Android系统对Persist App保活的相关机制, AMS会解析要启动APP的相关权限,发现有Persist属性,就会添加到mPersistentStartingProcesses列表中,如果内存不足要杀死后台进程,会排除mPersist

更多相关文章

  1. [Android(安卓)Develop_004] Android(安卓)Background Service
  2. 「Android」基于轻量级Messenger的进程通信
  3. Android(安卓)获取imei号码,获取手机型号和系统版本号等信息
  4. android 获取手机的信息
  5. android音频架构
  6. Android异步处理二:使用AsyncTask异步更新UI界面
  7. Android异步处理二:使用AsyncTask异步更新UI界面
  8. ListView之setEmptyView的问题
  9. ListView之setEmptyView的问题

随机推荐

  1. Android(安卓)ImageView的拖拽实现
  2. %s使用
  3. Android实用代码七段(三)
  4. MATCH_PARENT和FILL_PARENT区别
  5. AOSP: eclipse 导入 android Settings 源
  6. RemoteViews 中暗藏的坑
  7. appium windows下环境搭建
  8. Android(安卓)Cavans 基础应用
  9. Android(安卓)studio:Connection failed
  10. 【Android】升级ADT 22 引发的错误