2012-07-04 3 views
3

Je développe une application android pour le niveau 10 de l'API (2.3.3). Dans mon application, une barre de recherche est disponible qui a des valeurs de 0-25.Comment mettre à jour des vues simultanément dans android

Mon problème est que lorsque je progresse sur seekbar, je suis en train de mettre à jour plusieurs vues. Comme la vue peut être mise à jour à partir du thread d'interface utilisateur uniquement, toutes les vues mises à jour de manière synchrone signifient une par une. Moyens que je peux voir cette vue est mise à jour. Mes mises à jour ne nécessitent aucun travail de fond.

Donc, ma question est Y at-il un moyen de mettre à jour les vues simultanément? Moyens par exemple si j'ai 15 vues, puis-je mettre à jour tous en même temps comme en couvrant un fil?

Merci d'avance.

+0

Partagez un code de ce que vous avez déjà fait. – Martze

Répondre

0

Ce n'est pas possible. Considérons que vous pouvez réellement mettre à jour les composants de l'interface utilisateur depuis l'extérieur du thread de l'interface utilisateur (ce qui n'est pas possible), même si ce n'est pas simultané.

Disons que le thread 1 fait 100 opérations t1o1, t1o2, ..., t1o100 et le fil 2 fait t2o1, t2o2, ..., t2o100.

Si vous exécutez les deux, ils seront exécutés dans un ordre similaire à:

t1o1

t2o1

t1o2

t1o3

t2o2

....

Les deux fils sont en cours d'exécution en même temps, mais pas 2 opérations sont en cours d'exécution en même temps.

+0

Je peux voir asynctask peut être exécuté en parallèle, mais ce n'est pas disponible dans le niveau 10 de l'API. Semblable à cette fonctionnalité que je veux. Moyens Je ne veux pas dépendre/arrêter sur une vue quand elle est mise à jour. – AndroDev

+0

Asynctask * est * disponible dans l'API niveau 10. Mais ce n'est pas le point.Vous avez peut-être mal compris ma réponse. Aucune vue 2 peut être mise à jour en même temps. –

0

pas sûr de poser des questions à ce sujet mais AsyncTask et doInBackground fonctionne pour cela. aussi quand une tâche de fond faite vous pouvez mettre à jour votre barre de recherche de onPostExecute. mais vous devez porter le contexte qui a la barre de recherche.

+0

Comme je l'ai dit, je ne fais pas de travail de fond. Donc, pas d'utilisation de la tâche asynchrone. – AndroDev

1

Comme vous l'avez dit, les mises à jour ne peuvent être effectuées qu'à partir du thread UI, et le thread UI ne peut gérer qu'une seule vue par une. Vous n'avez donc pas d'autre choix que de les mettre à jour un par un. Mais si vous mettez toutes les mises à jour dans un exécutable, vous ne devriez normalement pas voir le processus de mise à jour.

+0

quel runnable? – AndroDev

+0

afin que vous appelez les mises à jour à partir du thread UI? que faites-vous pour calculer les valeurs? – Martze

Questions connexes