2010-09-13 8 views
6

Tengo una actividad. OnCreate la actividad obtiene la fuente (html) de una página web en una cadena y presenta el resultado (después de analizarlo un poco) en una vista de texto.Actualizar/recargar periódicamente la actividad

Me gustaría que la actividad se vuelva a cargar/actualizar periódicamente para presentar siempre la información más reciente.

¿Cuál es la mejor solución para esto?

+0

Tengo una pregunta de seguimiento. Cambié mi aplicación para tener 2 pestañas. Cada pestaña comienza su propia actividad. La primera pestaña usa la actividad descrita arriba. Después de que agregué la actualización periódica a esa pestaña/actividad, hay un retraso bastante grande cuando intento cambiar a la otra pestaña. ¿Sería mejor resolver esto usando vistas en cada pestaña? En ese caso, ¿cómo hago para que solo una de las pestañas/vistas se actualice periódicamente? – Raffe

+0

hola me quedé atascado con el mismo problema si la respuesta a continuación es resolver su problema, ¿puede proporcionar el código? He examinado el código, pero parece que algo va mal ... es demasiado urgente para cualquier ayuda ... :) :) usted puede envíeme un correo electrónico a [email protected] – Sumant

Respuesta

27

Antes que nada ... separa la lógica de actualización de tu método onCreate. Entonces, por ejemplo, puede crear un updateHTML().

A continuación, se puede utilizar un Timer con el fin de actualizar periódicamente la página:

public class YourActivity extends Activity { 

private Timer autoUpdate; 

public void onCreate(Bundle b){ 
    super.onCreate(b); 
    // whatever you have here 
} 

@Override 
public void onResume() { 
    super.onResume(); 
    autoUpdate = new Timer(); 
    autoUpdate.schedule(new TimerTask() { 
    @Override 
    public void run() { 
    runOnUiThread(new Runnable() { 
    public void run() { 
     updateHTML(); 
    } 
    }); 
    } 
    }, 0, 40000); // updates each 40 secs 
} 

private void updateHTML(){ 
    // your logic here 
} 

@Override 
public void onPause() { 
    autoUpdate.cancel(); 
    super.onPause(); 
} 
} 

en cuenta que estoy cancelando la tarea de actualización en , y que en este caso el método updateHTML se ejecuta cada 40 segundos (40000 milisegundos). Además, asegúrese de importar estas dos clases: java.util.Timer y java.util.TimerTask.

+0

Perfecto, muchas gracias. – Raffe

+0

Tengo una pregunta de seguimiento. Cambié mi aplicación para tener 2 pestañas. Cada pestaña comienza su propia actividad. La primera pestaña usa la actividad descrita arriba. Después de que agregué la actualización periódica a esa pestaña/actividad, hay un retraso bastante grande cuando intento cambiar a la otra pestaña. ¿Sería mejor resolver esto usando vistas en cada pestaña? En ese caso, ¿cómo hago para que solo una de las pestañas/vistas se actualice periódicamente? – Raffe

Cuestiones relacionadas