Android Java runOnUiThread()
J'ai été déconner un peu avec le runOnUiThread méthode. Et si je simplement faire une méthode dans mon activité:
public void Test()
{
runOnUiThread(new Runnable()
{
public void run()
{
Log.v("mainActivity", "test");
}
});
}
J'ai remarqué que cet exécutable ne fonctionne qu'une fois. Cependant, ce n'est pas un problème. Ce que je me demandais c'est si j'ai complètement raté quelque chose et qu'il fait quelque chose dans le fond qui serait la cause d'une cadence déplacer lorsque j'ai exécuté la méthode une fois en couple.
OriginalL'auteur Rasmus | 2013-05-07
Vous devez vous connecter pour publier un commentaire.
C'est le corps entier d' De l'activité.runOnUiThread(Runnable):
Le corps de la méthode est toujours exécuté dans votre thread d'arrière-plan, et mHandler de classe android.os.Gestionnaire met en œuvre une file d'attente interne pour Runnables posté, donc, sauf si vous êtes en train de faire le blocage de travail dans l'Exécutable (qui est un grand non-pas sur le Thread d'INTERFACE utilisateur) ou de l'appel de cette méthode plus d'un millier de fois dans une courte période, vous ne devriez pas voir la différence.
Maintenant, si vous étiez en appelant Gestionnaire d'.postAtFrontOfQueue(Runnable), alors il y aurait un problème, parce que votre Exécutable est essentiellement "une coupe en ligne". Dans ce cas, qui serait susceptible de provoquer un raclement de gorge, parce que votre Exécutable est en cours d'exécution, au lieu de toute l'INTERFACE utilisateur des mises à jour que nécessaire pour prendre place (de défilement, par exemple).
Notez bien que vous n' besoin pour exécuter l'INTERFACE utilisateur des mises à jour sur le thread de l'INTERFACE utilisateur, telles que les appels de méthodes sur une Vue (d'où le nom de "Thread d'INTERFACE utilisateur" et pourquoi cette méthode existe) ou de toute opération où la documentation indique explicitement qu'il doit être exécuté sur le thread d'INTERFACE utilisateur. Sinon, si vous êtes déjà sur un thread d'arrière-plan, il n'y a pas vraiment de raison de le quitter.
Cette instance de Gestionnaire, oui. Qu'est ce que ça existe. Vous pouvez voir comment mettre en place un Gestionnaire pour un autre thread ici: developer.android.com/reference/android/os/Looper.html
OriginalL'auteur Austin B
Il est peu probable qu'elle serait la cause de toute interruption importante de votre INTERFACE utilisateur processus, mais il n'y a vraiment aucun point en cours d'exécution sur le thread de l'INTERFACE utilisateur.
Si vous faites n'importe quel quantité importante de travail, vous devez vous assurer que vous ne le faites pas sur le thread d'INTERFACE utilisateur.
OriginalL'auteur GreyBeardedGeek