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 14/05/13, 14:02:03
Array

[xs_avatar]
Marciano Verde Marciano Verde no está en línea
Miembro del foro
 
Fecha de registro: mar 2013
Mensajes: 65
Modelo de smartphone: Samsung Galaxy S3
Tu operador: Movistar
Ejecutar cada cierto tiempo

¿como puedo hacer para que una función se ejecute cada cierto tiempo?
lo que quiero es que una vez por segundo se ejecute una función que me actualice unos textos. Ya he mirado por internet y parece que se puede hacer con Timer, pero no consigo que funcione, a ver si alguien me explica o me pone un ejemplo de como se puede hacer esto.
Responder Con Cita


  #2  
Viejo 14/05/13, 14:49:32
Array

[xs_avatar]
Dild0 Dild0 no está en línea
Usuario muy activo
 
Fecha de registro: may 2009
Mensajes: 860
Tu operador: Pepephone

quiza se podria hacer algo asi.

[PHP]

private Handler h = new Handler();
private Runnable r;


r = new Runnable() {
@Override
public void run() {

h.postDelayed(this, 1000);

tufuncion();

}

};

para ejecutar
h.post(r);

para parar
h.removeCallbacks(r);

[/PHP]
__________________
Responder Con Cita
  #3  
Viejo 14/05/13, 14:59:26
Array

[xs_avatar]
Dild0 Dild0 no está en línea
Usuario muy activo
 
Fecha de registro: may 2009
Mensajes: 860
Tu operador: Pepephone

otra opción es implementarlo en una clase por si necesitas tener varios objetos a la vez llamando a la funcion y asi pouedes hacer un inicio fin en el onStop y en el OnPause para cuando cambias de actividad dejarlos muertos

[PHP]
public class repite {

private Handler h = new Handler();
private Runnable r;


public repite() {
super();
}

public repite() {
super();
repitefuncion();
}
public void inicio() {
h.post(r);
}
public void fin() {
h.removeCallbacks(r);
}

private void repitefuncion() {

r = new Runnable() {

@Override
public void run() {

h.postDelayed(this, 1000);
tufuncion();

}
};

}
}[/PHP]


Aunq no se si es la mejor manera yo soy muy novato
__________________
Responder Con Cita
  #4  
Viejo 14/05/13, 15:07:20
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -

Yo también uso los Handler, es lo mejor para actualizar elementos de la interfaz de usuario porque ya estás en el hilo principal y evitas crear más hilos.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Responder Con Cita
  #5  
Viejo 14/05/13, 16:43:10
Array

[xs_avatar]
Marciano Verde Marciano Verde no está en línea
Miembro del foro
 
Fecha de registro: mar 2013
Mensajes: 65
Modelo de smartphone: Samsung Galaxy S3
Tu operador: Movistar
 Cita: Originalmente Escrito por Dild0 Ver Mensaje
quiza se podria hacer algo asi.

[php]

private Handler h = new Handler();
private Runnable r;


r = new Runnable() {
@Override
public void run() {

h.postDelayed(this, 1000);

tufuncion();

}

};

para ejecutar
h.post(r);

para parar
h.removeCallbacks(r);

[/php]
Pero, esto ¿donde lo meto?, lo he intentado en el archivo MainActivity.java, dentro o a continuación del "protected void onCreate(Bundle savedInstanceState) {" y me da el error: "Cannot instantiate the type Handler".
Ya he pulsado CTRL+SHIFT+O para que añada algún import, pero parece que no van por ahí los tiros...
Por favor, ayuda.
Responder Con Cita
  #6  
Viejo 14/05/13, 18:16:53
Array

[xs_avatar]
Dild0 Dild0 no está en línea
Usuario muy activo
 
Fecha de registro: may 2009
Mensajes: 860
Tu operador: Pepephone

declaraciones te las metes en la clase

[PHP]private Handler h = new Handler();
private Runnable r;[/PHP]

el codigo donde tu quieras, en el oncreate en una funcion o donde quieras usarlo
[PHP]r = new Runnable() {
@Override
public void run() {

h.postDelayed(this, 1000);

tufuncion();

}

};[/PHP]


Y la llamada como lo declaraste en la clase pues en cualquier parte que quieras hacer la ejecución, por ejemplo en el onResume y en el onStop

[PHP]para ejecutar
h.post(r);

para parar
h.removeCallbacks(r); [/PHP]


Te lo digo asi a ojo no tengo aqui el java instalado sorry puede q cometa errores
__________________
Responder Con Cita
Respuesta

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



Hora actual: 20:20:16 (GMT +1)



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

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