Pergunta

Tenho este problema no android.eu tenho uma atividade principal que abre um tópico com isso

   Runnable work = new Runnable() {

    public void run() {
        while (kill) {
            try {
                Thread.sleep(5000);
                connect();
                } catch (InterruptedException ex) {
                Logger.getLogger(MainActivity.class.getName()).log(Level.SEVERE, null, ex);
            }
        }


    }
};

kill é um booleano público em MainActivity. O que posso fazer para salvar o tópico para que, quando eu retome a atividade, eu ainda possa encerrá-lo?

Foi útil?

Solução

Acho que você deseja fazer algo mais próximo do que esta solução propõe.

No entanto, se você realmente deseja continuar fazendo isso em um Thread, sugiro que você estenda uma nova classe de Thread e adicione um método chamado killMe().Isso irá modificar o (agora privado ) sinalizador booleano kill.Então, em seu onRetainNonConfigurationInstance(), você pode retornar este Thread e pode recuperá-lo novamente em onResume.Se você retornar e a atividade não tiver sido eliminada, tudo bem, você pode apenas chamar killMe() no Thread existente.

Exemplo:

 @Override
  public Object onRetainNonConfigurationInstance() {
    return thread;
  }

Outras dicas

Por que você deseja encerrar o tópico do currículo?

Por que não iniciar o tópico na parte do currículo e, em seguida, colocar um bloco final para lidar com o fato de que o connect() foi interrompido e, quando ele começar novamente, você só precisa se reconectar e fazer a operação.

No caso de dispositivos móveis, sua melhor aposta é marcar algum armazenamento persistente onde você estiver, de forma que, se for interrompido, você possa continuar quando o Activity for iniciado novamente.

Você tem uma grande possibilidade de ser interrompido, então planeje isso.

O tópico pode ser eliminado pelo sistema operacional, portanto, não há nada para salvar e eliminar mais tarde.

Se você realmente precisa fazer algo assim, inicie um RemoteService, já que ele será executado em um processo diferente do seu Activity e é mais provável que permaneça.

Você pode querer olhar para esta questão:

Android Remote Service

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