服务使用START_NOT_STICKY重新启动

时间:2012-02-28 23:10:13

标签: android service

我有一个在后台运行的服务。如果系统在低内存条件下杀死此服务,则可以,但是,我不希望系统重新启动该服务。

所以为了做到这一点,我从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不应该允许重新启动服务。有没有其他方法可以阻止重启服务?或者,我可以告诉我的服务何时重新启动?

由于

2 个答案:

答案 0 :(得分:0)

你看过IntentService了吗?开始,做它需要做的事情,然后停止自己。我有更好的运气。

答案 1 :(得分:0)

重新启动服务可能有多种原因,即使它是NOT_STICKY:

  • 如果您的服务受到约束,请使用bindService并使用BIND_AUTO_CREATE
  • 如果您在服务上有待处理的意图

解决此问题的最佳方法是解除绑定服务。