Question

J'ai ce problème dans Android. J'ai une activité principale qui appelle un fil avec ça

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


    }
};

Tuez c'est un booléen public dans la mainactivité. Que puis-je faire pour enregistrer le fil afin que je reprenne l'activité, je peux toujours tuer le fil?

Était-ce utile?

La solution

Je pense que tu veux faire quelque chose de plus proche de quoi cette solution propose.

Cependant, si vous voulez vraiment continuer à le faire dans un Thread, alors je vous suggère de prolonger une nouvelle classe à partir de Thread et ajouter une méthode appelée killMe(). Cela modifiera le (maintenant privé) booléen kill drapeau. Ensuite, dans votre onRetainNonConfigurationInstance() Vous pouvez retourner ceci Thread Et vous pouvez le récupérer à nouveau onResume. Si vous retournez et que l'activité n'a pas été tuée, alors c'est bien, vous pouvez simplement appeler killMe() sur l'existant Thread.

Exemple:

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

Autres conseils

Pourquoi voulez-vous tuer le fil dans le CV?

Pourquoi ne pas démarrer le fil dans la partie du CV, puis mettre un bloc enfin pour gérer le fait que le connect() est interrompu, puis quand il recommence, il vous suffit de vous reconnecter et de faire l'opération.

Dans le cas des appareils mobiles, votre meilleur pari est de cocher dans un stockage persistant où vous êtes, de sorte que si vous êtes interrompu, vous pouvez continuer lorsque le Activity est recommencé.

Vous avez une forte possibilité d'être interrompu, alors concevez-le.

Le fil peut être tué par le système d'exploitation, il n'y a donc rien à sauver et à tuer plus tard.

Si vous avez vraiment besoin de faire quelque chose comme ça, commencez un RemoteService comme cela fonctionnera dans un processus différent de votre Activity et est plus susceptible de rester.

Vous voudrez peut-être regarder cette question:

Service à distance Android

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top