Serviço vai ser morto, não importa o que
-
22-12-2019 - |
Pergunta
Eu tenho um curioso problema.Eu tenho um não vinculado Serviço que eu chamo de usar o código abaixo da minha actividade principal quando o aplicativo é aberto.
//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);
Quando um novo sms vem no Serviço aguarda 3 segundos através de um temporizador para garantir que o conteúdo observador tem dados guardados para o sms interna db.depois que ele faz uma chamada para um intentservice para fazer o trabalho pesado.
Por razões Desconhecidas,o Serviço será, por vezes, travar e ficar preso em "reiniciar (veja a imagem)"
O curioso é que, mesmo tentando Forçar parar o serviço na seção aplicativos não funciona.Ele desaparece momentaneamente e, em seguida, aparece novamente com a mesma mensagem.usando stopService no código não funciona e o OnDestroy Método no Serviço nunca é chamado.A única maneira de contornar isso é para reiniciar o telefone.
O problema é que, quando se está nesse estado, ele não funciona.(o seu significado para analisar as Mensagens Sms de entrada)
Eu tenho isso em um galaxy note 3 com android 4.3
""
Minha suspeita é que o Intentservice fazendo a análise real não se completa e, portanto, a chamada para o Serviço pare de si nunca é chamado.
A minha pergunta é, existe uma maneira de forçar uma intentservice que tem travado para parar?
este é o código na StartCommand no serviço
public int onStartCommand(Intent intent, int flags, int startId) {
super.onStartCommand(intent, flags, startId);
if (!blnAutoSyncisEnabled) {
stopSelf();
return 0;
} else {
return START_STICKY;
}
}
de mais visão detalhada dos mesmos pergunta aqui https://stackoverflow.com/posts/21077517/edit
Solução
Isso pode não ser uma solução elegante, mas você pode chamar stopSelf()
diretamente nos serviços de onCreate()
método e lidar com a ação é onDestroy()
antes de chamar super.onDestroy()
.
Eu tive um problema semelhante que eu corrigido desta forma.Talvez isso vai resolver o seu problema também.Boa sorte.;)