我有一个在后台运行的服务。如果系统在内存不足的情况下终止此服务很好,但是,我不希望系统重新启动该服务。
因此,为了做到这一点,我从 onStartCommand 返回了 START_NOT_STICKY 标志,如下所示:
public int onStartCommand(Intent intent, int flags, int startId) {
// do stuff here
return START_NOT_STICKY;
}
Run Code Online (Sandbox Code Playgroud)
但是,当我故意打开一堆应用程序以创建低内存条件时,我在日志中看到了这一点:
Process com.myapp (pid 3960) has died.
Scheduling restart of crashed service com.myapp/.MyService in 5000ms
Low Memory: No more background processes.
...
Start proc com.myapp for service com.myapp/.MyService: pid=4905 uid=10031 gids={3003, 1015}
Run Code Online (Sandbox Code Playgroud)
所以我的进程在不应该重新启动时被重新启动。为什么是这样?根据文档 START_NOT_STICKY 不应允许重新启动服务。有没有其他方法可以防止服务重新启动?或者我可以知道我的服务何时重新启动?
谢谢