Android 服务已重新启动,启动\u不\u

Android 服务已重新启动,启动\u不\u,android,service,Android,Service,我有一个在后台运行的服务。如果系统在内存不足的情况下终止此服务,则没有问题,但是,我不希望系统重新启动该服务 为此,我从onstart命令返回START\u NOT\u STICKY标志,如下所示: public int onStartCommand(Intent intent, int flags, int startId) { // do stuff here return START_NOT_STICKY; } 但是,当我故意打开一堆应

我有一个在后台运行的服务。如果系统在内存不足的情况下终止此服务,则没有问题,但是,我不希望系统重新启动该服务

为此,我从onstart命令返回START\u NOT\u 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不应允许重新启动服务。是否有其他方法阻止服务重新启动?或者,我可以告诉您我的服务何时重新启动


谢谢

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

重新启动服务可能有多种原因,即使它不是粘性的:

  • 如果您的服务已绑定,请与BIND_AUTO_CREATE一起使用
  • 如果您对该服务有未决意图

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

您确定没有将启动所述服务的挂起意图吗?如果存在挂起的意图或触发了服务处理的意图,您仍将启动。没有挂起的意图。但是,该服务确实有几个BroadcastReceiver…这会影响什么吗?如果触发了一个注册了BroadcastReceiver的意图(例如,在AndroidManifest.xml中),该服务将被触发来处理它。BroadcastReceiver不是在清单中注册的,而是在服务本身中注册的:registerReceiver(myReceiver,new IntentFilter(MY_ID));我已删除所有广播接收器和侦听器,但仍然存在相同的问题。不幸的是,这对我的情况不起作用。我需要保持服务运行,直到系统决定是时候终止它。