Служба перезапущена с START_NOT_STICKY - PullRequest
4 голосов
/ 29 февраля 2012

У меня есть служба, которая работает в фоновом режиме. Хорошо, если система убивает этот сервис в условиях нехватки памяти, однако я не хочу, чтобы сервис перезапускался системой.

Поэтому, чтобы сделать это, я возвращаю флаг START_NOT_STICKY из моей onStartCommand следующим образом:

    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 голосов
/ 13 августа 2014

Причиной перезапуска службы может быть несколько причин, даже если она НЕ_СТИЧНАЯ:

  • Если ваша служба связана, с помощью bindService с BIND_AUTO_CREATE
  • Если у вас есть ожидающие намерения в Службе

Лучший способ решить эту проблему - отсоединить службу.

0 голосов
/ 29 февраля 2012

Вы смотрели на IntentService ?Запускает, делает то, что ему нужно, а затем останавливается.Мне повезло больше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...