|
||
|
|
|
|||||||
| 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
|
||||
|
||||
|
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();
}
}
}
}
Código:
vista.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (running){
hilo.start();
running=true;
}else{
hilo.interrupt();
}
un saludo. |
|
|
|
#2
|
||||
|
||||
|
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" |
|
#3
|
||||
|
||||
|
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? |
|
#6
|
||||
|
||||
|
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;
}
|
![]() |
Estás aquí
|
||||||
|
||||||