Comment vérifier si le thread actuel n'est pas thread principal
J'ai besoin de vérifier si le fil de l'exécution d'un morceau de code est le principal (UI) thread ou pas. Comment puis-je y parvenir?
- exemple pour démontrer, avec filetage exemple code2concept.blogspot.dans/2015/02/...
Vous devez vous connecter pour publier un commentaire.
si cela renvoie true, alors vous êtes sur le thread de l'INTERFACE utilisateur!
vous pouvez utiliser le code ci-dessous pour savoir si le thread de l'INTERFACE utilisateur/thread Principal ou pas
ou vous pouvez également utiliser cette
Ici est la même question
Looper.myLooper()
renvoie la valeur null si le thread n'est pas associé avec un Looper. Donc les deux sont en sécurité et avoir le même résultat, mais le premier est un peu plus lent alors qu'elle recherche à l'intérieur d'une carte pour trouver le looper et ses associés fil et faire quelques autres trucs .Le meilleur moyen est le plus clair et le plus robuste: *
Ou, si la plate-forme d'exécution est l'API de niveau 23 (Guimauve 6.0) ou plus:
Voir le Looper API. Noter que l'appel
Looper.getMainLooper()
implique la synchronisation (voir la source). Vous voudrez peut-être éviter la surcharge par le stockage de la valeur de retour et en les réutilisant.* de crédit greg7gkb et 2cupsOfTech
Looper.myLooper() == Looper.getMainLooper()
, je pense que c'est moins clair. J'crédit greg7gkb.equals
, et donc revient à==
, mais cela pourrait changer à l'avenir. J'ai donc corrigé la réponse.Résumant les solutions, je pense que c'est le meilleur:
Et, si vous voulez faire quelque chose sur le thread de l'INTERFACE utilisateur, vous pouvez utiliser ceci:
Vous pouvez vérifier
vous pouvez le vérifier sur android ddms logcat où id de processus sera le même, mais l'id de thread sera différent.
Xamarin.Android
port: (C#
)Utilisation:
Vous pouvez essayer de Fil.currentThread().isDaemon()