dans mon application android j'ai un ui-update-thread qui garde toutes mes vues à jour.comment redémarrer un fil dans Android?
protected Thread UIUpdateThread = new Thread()
{
@Override
public void run()
{
while(true)
{
query_some_data_from_service(); // gets some "fresh" data from a service
UIUpdateHandler.sendEmptyMessage(0); // will update all ui elements with the new values
sleep(1234);
}
}
};
je commence à ce fil dans onCreate() avec
UIUpdateThread.start();
et tout fonctionne très bien :) quand je quitte l'activité (par exemple parce que je passe à une autre activité) j'appelle
UIUpdateThread.interrupt();
dans onStop() pour empêcher le thread de s'exécuter tout le temps. Si je ne fais pas cela, il continuerait à fonctionner même si je ferme l'application!?!? !!
problème est: comment ramener ce fil à la vie lors du retour d'une autre activité à celui-ci? run() ne fonctionne pas, en appelant le début initial() dans une autre méthode comme onResume() bloque l'application.
je l'ai déjà essayé beaucoup de choses, mais rien ne semble fonctionner :(
J'ai découpé presque tout le corps du fil car il ne semblait pas pertinent à des fins de démonstration. le thread "original" comporte une boucle sans fin, interrogeant certaines données d'un service dans chaque tour. un gestionnaire est alors chargé d'afficher réellement les données récupérées par le thread. puisque ce thread ne tourne plus sur le retour à cette activité, mon interface utilisateur ne reçoit plus de mises à jour. :(c'est pourquoi je dois recommencer le fil de nouveau ... – xenonite
a résolu ceci - voir ma réponse – xenonite
Un temporisateur est une meilleure option pour de telles tâches, particulièrement sur une plate-forme embarquée. Les boucles occupées sur un serveur sont une chose, mais sur un téléphone avec une batterie itsy-bitsy, le système d'exploitation peut gérer les tâches de planification à des intervalles réguliers beaucoup mieux. – Nate