Bonjour,
Mon service effectue un traitement A.
Mon activity effectue un traitement B.
Je voudrais que B s'execute après que A ait fini.
Comment faire?
Merci.
Version imprimable
Bonjour,
Mon service effectue un traitement A.
Mon activity effectue un traitement B.
Je voudrais que B s'execute après que A ait fini.
Comment faire?
Merci.
Hello,
Je pense que tu pourrais probablement utiliser la synchronisation.
Tu définis un Object myLock connu à la fois par ton activity et ton service, puis tu utilises des blocs synchronized(myLock) dans tes deux composants.
Dans ton activity, à l'intérieur du bloc synchronized(myLock), tu fais un myLock.wait().
Dans ton service, tu effectues le traitement voulu à l'intérieur d'un block synchronized(myLock): une fois le traitement voulu effectué, tu fais un myLock.notify(), ce qui va redonner le monitor sur l'objet myLock à ton activity pour qu'elle finisse son traitement.
Bref, je ne suis peut-être pas très clair (je suis dans le train aussi :), mais cherche un peu de ce coté, je pense que tu trouveras ton bonheur.
Attention dans ton activity, il peut être nécessaire d'utiliser un thread séparé si tu es amené à attendre plus de 5 secondes, pour pas qu'android s'affole de ne pas voir ton activity réagir...
Cordialement,
Antoine
PS, pour les kadors d'android, n'hésitez pas à me corriger si je dis des bêtises, je suis assez nouveau avec Android, je ne voudrais pas faire perdre son temps à quelqu'un en proposant une solution non adaptée... :)
c'est pas vraiment du Android, mais plutot de la base de synchronization java...
Object lock = new Object();
Thread A:
// do something
lock.signal();
Thread B:
lock.wait();
// do something
Maintenant, en Android, il y a moyen de faire mieux à coup d'activités, de messages, et autres broadcasts...
Mais dur d'aider sans savoir ce que fait A et ce que fait B....
oui tout à fait d'accord Nicroman c'est pas du Android, je voulais plutôt dire que ne connaissant pas bien Android, je ne veux pas proposer de sortir la moissoneuse batteuse pour tondre la pelouse :)
Comme toi, je pense effectivement qu'il serait sans doute plus élégant d'utiliser un système d'event où équivalent, mais il est difficile d'aller plus loin sans une description plus complète de ton besoin.
Cordialement