首先对Android中进程的优先级从高到低进行一个划分
1.Foreground Process 前台进程 最前断的进程
2.Visible Process 可见的进程
3.Service Process 我们普通创建的Service
4.Background Process 处于背景情况下 没有退出但是没有显示了
5.Empty Process 应用推出了 资源释放了 但是内存还有一些缓存
当我们的系统需要资源的时候就会按照优先级从低到高进行回收。
单进程保活。
第一步创建一个Service在Start里面创建一个TimerTask 让他定时的打印东西,已向系统证明我是活跃的。
在OnDestory里面启动一个广播。而不是创建Service。
那么为什么创建广播而不是Service。
Service是属于当前的进程的,那么当前进程被销毁的时候我们的Service还是会被干掉。
广播的创建Process和我们自己创建的Process进行隔离。
系统层清空资源的时候我们的广播,也是和App相关联了,所以我们调用系统级别释放资源的时候,广播也被回收了,导致了无法唤起我们埋下的进程。
在Android6/7的时候我们的非前台的进程会被停止,或者被清除掉。
目前基本上失效了。
双进程守护
一个应有拥有两个进程。在讲这个之前我们先了解一些概念。
Service:
localService:普通的Service
RemoteService:IPC ,-》AIDL进程间通信(相关技术支付宝支付 微信 是给别人用的)是连接两个App的技术。
AIDL的使用模式:
1.第一步定义AIDL接口
2.未远程服务实现对应的stub
3.讲服务暴露给客户程序
解决思路:
进程A 进程B
删除A 同时创建B
删除B 同时创建A
JobScheduler & JobService
JobScheduler(不定时的定时器):可以检测到的广播充电wifi 不定式的提示 还有手机重启
obService service OnstartJob onStopJob·
Service不同于Activity在系统运行的时候只会存在一个。
支付宝 微信
终极的保活方式是进入白名单