Foros del Web » Programando para Internet » Android »

Ejecutar función cada segundo

Estas en el tema de Ejecutar función cada segundo en el foro de Android en Foros del Web. Hola; Necesito ejecutar la siguiente funcion cada 1000 milesegundos y sólo se puede ejecutar cuando la llamo por primera vez desde otra parte del código. ...
  #1 (permalink)  
Antiguo 07/01/2011, 13:27
 
Fecha de Ingreso: diciembre-2010
Mensajes: 61
Antigüedad: 13 años, 4 meses
Puntos: 4
Ejecutar función cada segundo

Hola;

Necesito ejecutar la siguiente funcion cada 1000 milesegundos y sólo se puede ejecutar cuando la llamo por primera vez desde otra parte del código.

Código:
  public  TimerTask updateCalculos(){
    
    	//mCalculosDisplay.setText("hola esto es una prueba");
	    //   	
    	final Calendar fecha1 = Calendar.getInstance();
      	fecha1.set(mYear, mMonth + 1, mDay);
      	final Calendar fecha2 = Calendar.getInstance();
    	fecha2.set(bYear, bMonth + 1, bDay);
    	
               	 
    	        // Obtenemos los milisegundos
    	        long mls1 = fecha1.getTimeInMillis();
    	        long mls2 = fecha2.getTimeInMillis();
    	         
    	        // calculamos la diferencia
                long dif = mls2 - mls1;
    	         
    	        // calculamos la diferencia en segundos
    	        long difS = dif / 1000;
    	
    	      
    	        
    	        mCalculosDisplay.setText(
    	                new StringBuilder()
    	                          .append(difS).append(" segundos").append("\n")
    	               
    	         );
    	        
    	       
    	               RepeatCalculos();        
    	       
        	
    }
He intentado usar esta opcion pero me casca la aplicación.

Código:
   public void RepeatCalculos() {
       
       timer = new Timer();
       timer.schedule(updateCalculos(),
                      0,        //initial delay
                      1*1000);  //subsequent rate
   }

En fins lo que necesito es poder ejecutar un setInterval(funcion(),1000) pero no encuentro la solución, espero que alguien me pueda echar una mano y no al cuello.

Saludos
  #2 (permalink)  
Antiguo 07/01/2011, 14:29
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: Ejecutar función cada segundo

A ver si te sirve:

Código C++:
Ver original
  1. int interv = 1000;
  2.             final Timer timerCheck = new Timer (interv, new ActionListener (){
  3.                 public void actionPerformed(ActionEvent e) {
  4.  
  5.                        //acciones
  6.                 }
  7.             });
  8.             timerCheck.start();
  #3 (permalink)  
Antiguo 07/01/2011, 15:16
 
Fecha de Ingreso: diciembre-2010
Mensajes: 61
Antigüedad: 13 años, 4 meses
Puntos: 4
Respuesta: Ejecutar función cada segundo

Gracias pero no me sirve no puedo cargar librerias javax.


Gracias por contestar.
  #4 (permalink)  
Antiguo 07/01/2011, 15:25
 
Fecha de Ingreso: diciembre-2009
Mensajes: 32
Antigüedad: 14 años, 5 meses
Puntos: 1
Respuesta: Ejecutar función cada segundo

Hola podrias probar con esto:

Thread mihilo=new Thread()
{
for(;;){
// ACCIONES AQUI
try{
this.sleep(1000);
}
catch(Exception ex)
}
};
mihilo.start();
  #5 (permalink)  
Antiguo 08/01/2011, 14:06
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: Ejecutar función cada segundo

Usar un Timer

http://www.java2s.com/Code/Java/Deve...havepassed.htm
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #6 (permalink)  
Antiguo 09/01/2011, 06:32
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Ejecutar función cada segundo

Cita:
Iniciado por yop289 Ver Mensaje
Gracias pero no me sirve no puedo cargar librerias javax.
Gracias por contestar.
¿Que clase de esas es javax? ¿Y por que no puedes cargarlas?
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #7 (permalink)  
Antiguo 09/01/2011, 10:34
 
Fecha de Ingreso: diciembre-2010
Mensajes: 61
Antigüedad: 13 años, 4 meses
Puntos: 4
Respuesta: Ejecutar función cada segundo

Cita:
Iniciado por GreenEyed Ver Mensaje
¿Que clase de esas es javax? ¿Y por que no puedes cargarlas?
He de decir que llevo 2 dias programando una aplicación en android, he intentando cargar la siguiente libreria pero no me ha dejado.

javax.swing.Timer

Sólo me permite cargar la libreria

java.util.Timer


Al final después de leer y buscar parece ser que el programa me casca debido a que no va muy bien con StringBuilder() a la hora de hacer un Timer.


Ya pondré el código

Gracias a todos por la ayuda
  #8 (permalink)  
Antiguo 10/01/2011, 10:51
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Ejecutar función cada segundo

Cita:
Iniciado por yop289 Ver Mensaje
He de decir que llevo 2 dias programando una aplicación en android, he intentando cargar la siguiente libreria pero no me ha dejado.

javax.swing.Timer

Sólo me permite cargar la libreria

java.util.Timer
Aha, el problema es que Android hace las cosas diferentes y tendrás que usar java.util.Timer. No es lo mismo que usar Java normal.

Cita:
Iniciado por yop289 Ver Mensaje
Al final después de leer y buscar parece ser que el programa me casca debido a que no va muy bien con StringBuilder() a la hora de hacer un Timer.

Ya pondré el código

Gracias a todos por la ayuda
No he programado en Android pero he oido que algunas clases tienen cambios y no funcionan como se espera. Es lo que tiene pasarse la especificación por el forro . Si el código en Java normal te funciona y no te funciona en Android, quizá en algun foro específico de Android te puedan ayudar mejor, por que aquí mucha gente te recomendará soluciones con Java estándar que no te funcionarán.

Suerte
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #9 (permalink)  
Antiguo 10/01/2011, 20:00
 
Fecha de Ingreso: septiembre-2008
Ubicación: Córdoba
Mensajes: 67
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Ejecutar función cada segundo

No se nada de Android pero yo probaria con algo asi:

Código:
public class MiTimer implements Runnable {
  private String mensaje; // Puede ser StringBuilder 
  private final long intervalo; // siendo intervalo en tu caso 1000
  private long tiempoInicial = System.currentTimeMillis();
  public MessagePrinter(String mensaje, long intervalo) {
    this.mensaje = mensaje;
    this.intervalo = intervalo;
  }
  public void run() {
      while (true) {
        if(System.currentTimeMillis() - tiempoInicial >= intervalo) {
          System.out.println(mensaje); // como tenga que ser o lo que tenga q hacer
          tiempoInicial = System.currentTimeMillis();
        }
      }
  }
}

Si no te funciona el StringBuilder proba con StringBuffer

Espero te sirva... Saludos

Etiquetas: ejecutar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:16.