13.如何确保一个Service不会在系统内存不足的情况下被杀死?

由于服务是在后台运行的,是不可见的,属于后台进程,所以在系统内存不足的情况下可能会被清理掉。

方法1.
众所周知,前台进程是不会在系统资源不足的情况下被自动清理掉的,所以要确保Service不会被杀死,我们可以想办法让它百年城一个前台进程。要让Service变成前台进程,我们可以在启动服务的时候使用startForeground()方法将Service变成前台进程。
进过实测,使用该方法能降低被kill的概率,但不能确保不被kill。

方法2.
除了让它变成前台进程外,我们还能通过onDestroy()方法中发送广播,在广播接收者中重启服务。但是当使用第三方应用强制kill服务的话,连onDestroy()方法都进不来,所以还是无法确保。

方法3.使用双服务Service守护,两个service不断地相互判断对方是否存活,如果发现对方被杀死则立即将其重新开启。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 让app 的service常驻其实是很流氓的做法,但是需求摆在那里。。。 但是要清除一点:想百分百保活servic...
    PengPengPro阅读 16,319评论 10 65
  • 什么是进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单...
    晨起清风阅读 1,832评论 0 5
  • 如何进行进程保活,首先我们应该先分析一下进程被杀死的原因开始 Android进程被杀死的场景分析: 从 Andro...
    如颖随行日记阅读 4,954评论 2 4
  • 如何进行进程保活,首先我们应该先分析一下进程被杀死的原因开始 Android进程被杀死的场景分析: 从 Andro...
    编程小猪阅读 3,598评论 1 14
  • HandlerThread是一个Android 已封装好的轻量级异步类。HandlerThread本质上是一个线程...
    kjy_112233阅读 1,336评论 0 9