Ver la Versión Completa : [ CONSULTA ] Temporizador
st4rw0lf
28/10/13, 20:28:03
Buenas noches, desde hace un par de días estoy con el android studio comiéndome la cabeza para poner una cuenta atrás para que si no haces ninguna acción en X segundos te redirija a otra pantalla.
Os agradecería que ayudarais con alguna idea de como hacerlo y así investigar
Muchas gracias a todos.
mocelet
28/10/13, 21:52:01
Yo lo hago con un handler y el método handler.sendMessageDelayed(...) con el tiempo que le pongas y algo que identifique el mensaje (yo tengo una variable, llamémosla TIMEOUT_MESSAGE de tipo int que vale 1).
En el onCreate tengo esto:
handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == TIMEOUT_MESSAGE){
// Lo que quieras hacer
}
}
};
Luego tengo un startTimer y un stopTimers (tengo más temporizadores)
private void startTimer(){
handler.sendMessageDelayed(handler.obtainMessage(T IMEOUT_MESSAGE), TIEMPO_QUE_SEA);
}
private void stopTimers(){
if (handler != null){
handler.removeMessages(TIMEOUT_MESSAGE);
}
}
Si el usuario hace algo, se para la actividad o lo que sea paras el timer con stopTimers y ya está.
En el onResume por ejemplo lo inicias con startTimer.
Supongo que me habré dejado algo porque he hecho medio copy-paste de una de mis apps, pero la idea es esa, aprovecharse del handler para enviar mensajitos. Lo bueno del handler es que funciona en el hilo principal, así que puedes hacer de todo en el método handleMessage.
kriogeN
28/10/13, 23:25:02
Muy bueno Mocelet, yo lo hago de una forma muchísimo más compleja, esto me lo apunto para a partir de ahora hacerlo así.
mocelet
28/10/13, 23:52:03
Gracias, desde que descubrí los handlers los uso todo lo que puedo :)
Otra cosa, para la cuenta atrás es trivial añadir los ticks del contador para actualizar un textview, basta definir otro tipo de mensaje (TICK_MESSAGE con valor 2 por ejemplo) y lanzarlo cada segundo (en mi app como la cuenta es de 5 segundos los programo de golpe: un tick en el momento, otro en 1 segundo, otro en 2... , y a los 5 el mensaje de timeout).
vBulletin® v3.8.1, Copyright ©2000-2026, Jelsoft Enterprises Ltd.