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

"Hanging Service"

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

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top