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)?

Foi útil?

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

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