Devo usar intenção serviço?
-
14-11-2019 - |
Pergunta
Eu tenho uma tela de logon do usuário.O usuário pressiona um botão de login e criar uma IntentService para se conectar a minha resto serviços e retornar um resultado da autenticação.
Agora aqui é a funcionalidade que eu quero alcançar:Se a atividade está em pausa (i.e.vai para o fundo), em seguida, a intenção serviço deve executar, e ele o faz.Mas se eu usar o gerenciador de tarefas para finalizar a aplicação, a intenção serviço deve parar, apesar de agora não.Ele continua a executar onHandleIntent
até a completa.Se eu chamar manualmente stopSelf()
, onDestroy()
é chamado, mas o onHandleIntent
método continua a executar.Como faço para forçar o onHandleIntent
para parar?Chamada de "retorno" não é uma opção, pois poderia ser pego em um resto de chamada de método.
Eu deveria estar usando intenção de serviços por esta funcionalidade ou outra coisa (como o serviço ou asynctask)?
Solução
Primeiro, se o seu serviço é fazer algo que você quer fazer durante a execução do aplicativo em primeiro plano e, em seguida, você não precisa de um Serviço.A sua actividade ou a caixa de diálogo pode apenas gerar um thread para fazer a sua tarefa, e essas linhas vai acabar quando o aplicativo termina, uma vez que eles estão dentro do espaço da tarefa de seu aplicativo.Caso contrário, para as tarefas que você quer fazer o tempo todo, quando o usuário poderia fazer nada sobre o dispositivo, definitivamente, usar um Serviço.
Eu não sei por que "de chamada de retorno" não é uma opção para você?Por isso eu suponho que você quer dizer a verificação de uma condição, e sair do loop ou bloco, se a condição for cumprida.Este é, em geral, como threads (em serviços ou em outro lugar) deve terminar (embora existam outras abordagens).O serviço de thread pode ouvir a um evento específico que ocorreu (como se a atividade tiver sido destruída, pela definição de uma propriedade em um arquivo de banco de dados ou quando a atividade onDestroy
é chamado, mas se é isso que você quer, então você provavelmente NÃO deve usar um Serviço) e, em seguida, run()
pode retornar normalmente.
Mas se essa é uma tarefa que você queira fazer, não importa o que o usuário está fazendo no seu dispositivo (dentro ou fora do seu aplicativo), então ele deve ser uma tarefa que não deve ser interrompido a partir do exterior.Ele deve continuar até que ele é feito.
Talvez se você pudesse definir melhor quando você deseja que o serviço seja interrompido?
Outras dicas
parar em seu onDestroy()
método