![]() |
|
Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
«
Tema Anterior
|
Siguiente tema
»
|
Herramientas |
#1
|
||||
|
||||
Editar constantemente un TextView y se vaya mostrando.
Bueno, tengo esta duda respectivamente tengo un textview y quiero ir cambiandolo en un ciclo for, pero que el cambio se vaya mostrando por pantalla...
El Error? Bueno se cambia por dentro pero solo me muestra el ultimo textview.SetText ... el ultimo cambio es el que muestra por pantalla...
(Click para mostrar/ocultar)
Por ejemplo por pantalla solo me aparece "CAMBIppppO", pero quiero que aparezca "CAMBIO", luego del retardo aparezca "CAMBIppppO". Como?? Saludos y gracias de ante mano. |
|
#2
|
||||
|
||||
Hacer un Thread.sleep() en el hilo principal de ejecución es pecado capital, ¡paras la app completamente!
Te remito a mi respuesta en un hilo sobre el uso de handlers http://www.htcmania.com/showthread.php?t=708570 |
#3
|
||||
|
||||
Para este caso creo que lo suyo es usar un AsyncTask y hacer la actualización en el onProgressUpdate.
Usando Handlers vas a tener que llamar al sendMessageDelayed en cada actualización del TextView, mientras que con el AsyncTask si que puedes poner el Thread.sleep en el doInBackground. |
#4
|
||||
|
||||
Las AsyncTask son para tareas cortas, más desde que cambiaron el executor por defecto que las encola y no necesariamente abre otro hilo cuando llega una tarea nueva.
Meter un sleep dentro me da el mismo respeto porque podría estar impidiendo la ejecución de otra tarea. Para temporizar, en vez de enviar mensajes con el handler también se puede programar un Runnable que es incluso más limpio. Y si quiere un bucle que lo reprograme al final. |
#5
|
||||
|
||||
SI eso no tengo problema, pero porque se me modifica y me muestra solo el ultimo cambio por pantalla y no me muestra los dos??
|
#6
|
||||
|
||||
Cuando haces el primer setText, la próxima vez que se redibuje la pantalla pintará el texto nuevo. Pero esa vez nunca llega porque el sleep se ejecuta en el hilo principal (el que pinta, también llamado UI Thread) y bloquea la app.
Cuando el sleep acaba pones otro texto, de modo que cuando Android vuelve a tomar el control del hilo principal y pueda pintar la pantalla el texto es el último. |
#7
|
||||
|
||||
Cita:
Haz todo el proceso en un único método o cambia los tiempos de espera. |
#8
|
||||
|
||||
Cita:
La explicación al por qué el texto es el último es la de mi mensaje anterior: cuando Android recupera el control del hilo principal para pintar el texto, el valor actual es el último. |
#9
|
||||
|
||||
Cita:
|
Respuesta |
![]() |
||||||
|
«
Tema Anterior
|
Siguiente tema
»
|
|
Hora actual: 01:07:26 (GMT +2)
HTCMania: líderes desde el 2007