Quelle est la différence entre Activity.runOnUiThread
et View.post
, quelqu'un pourrait-il, s'il vous plaît, expliquer?
Réponses
Trop de publicités?Il n'y a pas vraiment de différence, sauf que l' View.post
est utile lorsque vous ne disposez pas d'un accès direct à l'activité.
Dans les deux cas, si ce n'est sur le thread de l'INTERFACE utilisateur, Handler#post(Runnable)
sera appelé en coulisses.
Comme CommonsWare mentionnées dans le commentaire, il y a une différence entre les deux, lorsqu'il est appelé sur le thread de l'Interface utilisateur, Activity#runOnUiThread
qui fera appel à la run
méthode directement, tandis que d' View#post
affichera l' runnable
sur la file d'attente (par exemple, appeler l' Handler#post
)
Le point important de l'OMI est que les deux ont le même objectif, et pour quiconque de l'utiliser, il devrait y avoir aucune différence (et la mise en œuvre pourrait changer dans le futur).
Sont acceptables pour la plupart des situations et pour la plupart, ils sont interchangeables, mais ils sont légèrement différents. La plus grande différence est bien sûr que l'on est disponible à partir d'un Activity
et l'autre à partir d'un View
. Il y a beaucoup de chevauchement entre les personnes, mais parfois en Activity
vous n'aurez pas accès à un View
, et parfois en View
vous n'aurez pas accès à un Activity
.
L'un des cas que j'ai rencontré avec View.post
je l'ai mentionné dans une réponse à l'autre question sur View.post
: View.post
ne fonctionne qu' à partir d'un autre thread lorsque l' View
est attaché à une fenêtre. C'est rarement un problème, mais peut parfois provoquer l' Runnable
à ne jamais exécuter, surtout si vous vous appelez View.post
dans la onCreate
méthode de Activity
. Une alternative est d'utiliser Handler.post
qui est ce que l' Activity.runOnUiThread
et View.post
a utiliser sous la couvre de toute façon.
(édité pour plus de précision, a ajouté: "à partir d'un autre thread")