进程的生命周期
进程有四种形态和优先级:空进程,后台进程,服务进程,前台进程.可视进程
系统内存不足时杀进程来回收内存的顺序从左往右.正常启动一个应用后,安卓系统默认一个应用开启一个任务栈,当任务栈被清空时,进程中如果没有服务,就变为级别最低的空进程,系统内容不足时,最先被杀死.
普通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