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


 
Herramientas
  #1  
Viejo 31/05/13, 11:42:39
Avatar de manolazo
manolazo manolazo no está en línea
Miembro del foro
Mensajes: 219
 
Fecha de registro: jun 2012
Localización: Madrid
Mensajes: 219
Modelo de smartphone: Samsung Galaxy S7 edge
Tu operador: Pepephone
Mencionado: 1 comentarios
Tagged: 0 hilos
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
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
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
Avatar de manolazo
manolazo manolazo no está en línea
Miembro del foro
Mensajes: 219
 
Fecha de registro: jun 2012
Localización: Madrid
Mensajes: 219
Modelo de smartphone: Samsung Galaxy S7 edge
Tu operador: Pepephone
Mencionado: 1 comentarios
Tagged: 0 hilos
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
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
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
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
Duplicado.
Responder Con Cita
  #6  
Viejo 31/05/13, 16:06:43
Avatar de manolazo
manolazo manolazo no está en línea
Miembro del foro
Mensajes: 219
 
Fecha de registro: jun 2012
Localización: Madrid
Mensajes: 219
Modelo de smartphone: Samsung Galaxy S7 edge
Tu operador: Pepephone
Mencionado: 1 comentarios
Tagged: 0 hilos
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   HTCMania > Todo sobre Android > Programación y Desarrollo para Android

Herramientas

Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 18:15:25 (GMT +1)

Cookies settings
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007