我有一个在后台运行的服务。如果系统在低内存条件下杀死此服务,则可以,但是,我不希望系统重新启动该服务。
所以为了做到这一点,我从onStartCommand返回START_NOT_STICKY标志:
public int onStartCommand(Intent intent, int flags, int startId) {
// do stuff here
return START_NOT_STICKY;
}
然而,当我故意打开一堆应用程序以创建低内存条件时,我会在日志中看到这一点:
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}
所以当我的进程不应该被重新启动时。为什么是这样?根据文档,START_NOT_STICKY不应该允许重新启动服务。有没有其他方法可以阻止重启服务?或者,我可以告诉我的服务何时重新启动?
由于
答案 0 :(得分:0)
你看过IntentService了吗?开始,做它需要做的事情,然后停止自己。我有更好的运气。
答案 1 :(得分:0)
重新启动服务可能有多种原因,即使它是NOT_STICKY:
解决此问题的最佳方法是解除绑定服务。