123 votes

Comment détecter le fil d'interface utilisateur sur Android?

Existe-t-il un moyen robuste de détecter si Thread.currentThread() est le thread de l'interface utilisateur du système Android dans une application?
Je voudrais mettre quelques assertions dans mon code de modèle qui affirme qu'un seul thread ( par exemple, le thread ui) accède à mon état, afin de garantir qu'aucun type de synchronisation n'est nécessaire.

209voto

mik3y Points 2349

La pratique courante pour déterminer l'identité du thread d'interface utilisateur consiste à utiliser Looper # getMainLooper :

 if (Looper.getMainLooper().getThread() == Thread.currentThread()) {
  // On UI thread.
} else {
  // Not on UI thread.
}
 

44voto

ATom Points 4809

Je pense que la meilleure façon est la suivante:

  if (Looper.getMainLooper().equals(Looper.myLooper())) {
     // UI thread
 } else {
     // Non UI thread
 }
 

2voto

yushulx Points 2984

Outre la vérification boucleur, si vous déjà essayé d’id de thread de déconnexion dans `` , vous pourrez trouver l’id de thread d’interface utilisateur (thread principal) toujours égal à 1. C’est pourquoi

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X