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

Respuesta
 
Herramientas
  #1  
Viejo 31/05/13, 11:42:39
Array

[xs_avatar]
manolazo manolazo no está en línea
Miembro del foro
 
Fecha de registro: jun 2012
Localización: Madrid
Mensajes: 219
Modelo de smartphone: Samsung Galaxy S7 edge
Tu operador: Pepephone
como arrancar y parar un hilo a traves de clicks

Buenas.

Tengo el siguiente hilo el cual invalida una view para mover por ejemplo un objeto en pantalla:

Código:
boolean running = true;

class Hilo extends Thread{			
			public void run(){
				while(running){		
					 postInvalidate();
					try {
						Thread.sleep(100);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}					
				}				
			}
		}
Quiero que al pulsar la view mediantes click se arranque el hilo, si vuelvo a tocar la view se pare, si vuelvo a tocar se reanude, si vuelvo a tocar se parey asi sucesivamente:

Código:
vista.setOnClickListener(new View.OnClickListener() {					
				@Override
				public void onClick(View v) {	
					if (running){
						hilo.start();	
						running=true;
					}else{
                                               hilo.interrupt();
                                               }
Como se haria?
un saludo.
Responder Con Cita


  #2  
Viejo 31/05/13, 13:52:19
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
Pues sería casi como lo tienes, pero creo que hay algunas cosas que están mal:

El estado inicial de la variable "running" debería ser "false"

Y en el segundo fragmento, en lugar de "if (running)" debería ser "if (!running)", y establecer "running=true" antes de "hilo.start()" y en el "else" puedes quitar el "hilo.interrupt()" y cambiarlo por "running=false"
Responder Con Cita
  #3  
Viejo 31/05/13, 14:59:43
Array

[xs_avatar]
manolazo manolazo no está en línea
Miembro del foro
 
Fecha de registro: jun 2012
Localización: Madrid
Mensajes: 219
Modelo de smartphone: Samsung Galaxy S7 edge
Tu operador: Pepephone
Buenas.

Ya probe lo que dices pero no funciona. El primer click arranca el hilo, el segundo lo para, pero el tercero vuelve a arrancar el hilo lo cual provoca un error indicando que el hilo ya esta arrancado.

Creo que habria que hacer uso de hilo.interrupt() y hilo.resume() pero resume() esta obsoleto.
¿Alguna idea?
Responder Con Cita
  #4  
Viejo 31/05/13, 15:20:58
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
Tienes que volver a crear el hilo, no puedes iniciar el mismo hilo 2 veces.
Responder Con Cita
  #5  
Viejo 31/05/13, 15:23:26
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
Duplicado.
Responder Con Cita
  #6  
Viejo 31/05/13, 16:06:43
Array

[xs_avatar]
manolazo manolazo no está en línea
Miembro del foro
 
Fecha de registro: jun 2012
Localización: Madrid
Mensajes: 219
Modelo de smartphone: Samsung Galaxy S7 edge
Tu operador: Pepephone
Hola.
No sabia que no se puede iniciar un hilo dos veces con el metodo resume().
Haciendo lo que comentas si funciona.
Código:
                                     if(!running){
						running=true;
						hilo = new Hilo();
						hilo.start();
					}else{
						running=false;						
					}
Gracias
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 23:32:55 (GMT +1)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2026 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /