由于服务是在后台运行的,是不可见的,属于后台进程,所以在系统内存不足的情况下可能会被清理掉。
方法1.
众所周知,前台进程是不会在系统资源不足的情况下被自动清理掉的,所以要确保Service不会被杀死,我们可以想办法让它百年城一个前台进程。要让Service变成前台进程,我们可以在启动服务的时候使用startForeground()方法将Service变成前台进程。
进过实测,使用该方法能降低被kill的概率,但不能确保不被kill。
方法2.
除了让它变成前台进程外,我们还能通过onDestroy()方法中发送广播,在广播接收者中重启服务。但是当使用第三方应用强制kill服务的话,连onDestroy()方法都进不来,所以还是无法确保。
方法3.使用双服务Service守护,两个service不断地相互判断对方是否存活,如果发现对方被杀死则立即将其重新开启。