Tuez un fil après reprendre l'activité principale?
-
28-10-2019 - |
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?
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: