2014-01-11 4 views
0

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

//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); 

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

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

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

Проблема заключается в том, что, когда он находится в этом состоянии он не функционирует. (Его означало для разбора входящих SMS- сообщений)

Я бегу это на Galaxy Note 3 с андроид 4.3

" Hanging Service "

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

Вопрос в том, есть ли способ заставить intenservice, который повесил, чтобы остановиться?

это код в Команда пуска в службе

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

+0

В начале я завернул весь код в службу в попытке поймать с возвратом в исключение, чтобы служба могла прекратить себя изящно – KuriaNdungu

ответ

0

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

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

+0

Спасибо. Я попытался сделать это, но обнаружил, что метод onDestroy не вызывается, когда Служба находилась в режиме перезагрузки. проверка работоспособности службы привела к «истине», но попытка остановить ее отказалась работать. Еще раз спасибо за ваше предложение. – KuriaNdungu

Смежные вопросы