la aplicacion se queda congelada momentaneamente , hasta terminar el ciclo

Iniciado por manuel3265, 21 Junio 2017, 00:09 AM

0 Miembros y 1 Visitante están viendo este tema.

manuel3265

Aplicacion en Android[/color]

Hola, quiero preguntar a ver si alguien sabe por que al ejecutar un ciclo ya sea for o while en android, la aplicacion se queda congelada momentaneamente , hasta terminar el ciclo,

les voy a explicar, estoy haciendo una aplicacion en android y necesito que ejecute un ciclo que sume a un contador y mientras va sumando vaya modificando un TextView, y oues la idea es que empiece  a sumar valores y los muestre en el TextView y cuando yo presione un boton para pararlo, y muestre el numero en el cual quedo la cuenta, pero no se puede por  por que una vez inicia el ciclo la aplicacion se congela por que se esta ejecutando, y pues no es posible presionar el boton de detener, y pasa por que el ciclo esta puesto para que pare cuando yo presione el boto pare, pero si por ejemplo yo le establezco un limite hasta 10, la aplicacion se congela hasta que el contador llega a 10.

el codigo que tengo es asi:

Código (java) [Seleccionar]
private int contador = 0;
private TextView textView;
private boolean state = true;

textView = (TextView)ViewById(R.Id.textView);

while(state == true){
   
     contador++;
     textView.setText(Integer.toString(contador));
     }

codigo que va dentro del metodo de onClick del boton.

state = false;



necesito saber como hacer lo que quiero sin que se bloquee la aplicacion.






· Los códigos deben ir en etiquetas GeSHi
· Los titulos deben ser descriptivos al tema
· Esto no es una duda general, esto va en programación en java (o si defecto programación general)
>aquí las reglas del foro
-Engel Lex

Yuki

No he programado en Java, pero puedo asumir que al entrar en el bucle/ciclo el programa deja de procesar los mensajes de las ventanas.

Tal vez esto te sirva:

https://stackoverflow.com/questions/3310023/application-doevents-equivalent-function-in-java
https://stackoverflow.com/questions/12626952/in-java-is-there-something-like-doevents-from-vb6
http://www.lawebdelprogramador.com/foros/Java/833556-doevents-para-java.html

Sino, lo que podes hacer es modificar tu código para que el bucle se ejecute en un nuevo hilo de tal manera que no detenga el código principal.

Eleкtro

Cita de: manuel3265 en 21 Junio 2017, 00:09 AM
necesito saber como hacer lo que quiero sin que se bloquee la aplicacion.

Lee sobre programación asincrónica.

saludos