Вопрос

У меня довольно любопытная проблема.У меня есть несвязанная служба, которую я вызываю, используя приведенный ниже код из моего основного действия, когда приложение открывается.

//some code checks if the service is awake. if not then the code below is called        
Intent serviceIntent = new Intent(this, SMS_Listener_Service.class);
startService(serviceIntent);

Когда приходит новое SMS-сообщение, Служба ожидает 3 секунды с помощью таймера, чтобы убедиться, что наблюдатель контента сохранил данные во внутренней базе данных SMS.после этого он вызывает службу намерений, чтобы выполнить тяжелую работу.

По неизвестным причинам Служба иногда зависает и застревает при «перезапуске (см. изображение)».

Любопытно то, что даже попытка принудительной остановки службы в разделе приложений не работает.Он на мгновение исчезает, а затем появляется снова с тем же сообщением.использование stopService в коде также не работает, и метод OnDestroy внутри службы никогда не вызывается.Единственный выход – перезагрузить телефон.

Проблема в том, что в этом состоянии он не работает (он предназначен для анализа входящих SMS-сообщений).

Я запускаю это на Galaxy Note 3 с Android 4.3.

"Hanging Service"

Я подозреваю, что Intentservice, выполняющий фактический анализ, не завершается, и поэтому вызов службы для остановки никогда не вызывается.

Мой вопрос: есть ли способ заставить зависшую службу намерений остановиться?

это код в StartCommand в сервисе

  public int onStartCommand(Intent intent, int flags, int startId) {
    super.onStartCommand(intent, flags, startId);

    if (!blnAutoSyncisEnabled) {
        stopSelf();
        return 0;
    } else {
        return START_STICKY;

    }

 }

более подробный обзор того же вопроса здесь https://stackoverflow.com/posts/21077517/edit

Это было полезно?

Решение

Возможно, это не очень элегантное решение, но вы можете позвонить stopSelf() прямо в сервисе onCreate() метод и обрабатывать фактическое действие в нем onDestroy() перед звонком super.onDestroy().

У меня была похожая проблема, которую я решил таким образом.Возможно, это решит и вашу проблему.Удачи.;)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top