APP的不同level的保命措施

进程的生命周期

进程有四种形态和优先级:空进程,后台进程,服务进程,前台进程.可视进程
系统内存不足时杀进程来回收内存的顺序从左往右.

正常启动一个应用后,安卓系统默认一个应用开启一个任务栈,当任务栈被清空时,进程中如果没有服务,就变为级别最低的空进程,系统内容不足时,最先被杀死.

普通level:提升到服务进程

提供进程优先级的第一步:应用中开启服务,将进程优先级提升到服务进程.
此进程还是可以通过killRunningProgress方法来杀死
好处:优先级提升,并且即使被杀死,也能在内存足够时尽快重启服务,进程从而重新活过来.

问题:服务状态的保存和恢复:

高级level:将服务进程贴到通知栏上,从而变成前台进程

在服务的 onCreate 里面设置 startForeground(110, new Notification.Builder(this).build())

效果:无法通过通过killBackgroundProgress的方法来杀死.可以让市面上的内存清理软件杀不到本进程.
缺点:会在通知栏显示:“XXX正在运行”

丧心病狂level:制作一个1像素的桌面控件常驻桌面

据说qq是这样做到的.
思路:
类似暴风影音的小人,金山的桌面清理条,这些都是以系统级alertdialog的形式而存在的,一般是在应用的一个服务中开启.

用c代码fork一个子进程:

据说360是这样做到的
参见:
https://github.com/android-cn/android-discuss/issues/49#issuecomment-122854156

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值