Android: cómo utilizar un temporizador
Esta es mi primera publicación..
así que estoy aprendiendo Android y Java (procedente de Actionscript), y estoy trabajando en un proyecto donde:
- Hacer un temporizador de intervalo en Java android
- ¿Cómo puedo detener un temporizador?
- Temporizador de TextView de Android
- Android: EditText pierde foco cuando se llama a setText
- Visibilidad de un botón en el temporizador
Estoy tratando de hacer clic en un ImageView, que ImageView intercambiar imágenes por un segundo, a continuación, volver a la imagen original. (esto es para un juego de tapping)
suena bastante fácil, ¿verdad? He pasado todo el día tratando de obtener un estándar Java Timer / TimerTask para trabajar .. no hay suerte ..
hay una mejor manera? Quiero decir, ¿hay una forma específica de Android para hacer algo como esto? Si no, entonces ¿cuál es la forma ideal?
gracias por toda su ayuda de antemano chicos! -gramo
- incapaz de decodificar la secuencia java.io.FileNotFoundException / storage / emulated / 0 open failed: ENOENT (No existe tal archivo o directorio
- ¿Cuál es el enfoque más eficiente en cuanto a la batería de usar LocationClient para recibir actualizaciones periódicamente?
- Resched. Timer after cancel da "java.lang.IllegalStateException: Timer cancelado."
- Tema de Android Simple Timer / Timertask
- Ejecución de una tarea asíncrona dentro de un temporizador en Android
- Temporizador en segundo plano
- Timertask o manejador
- Android no puede crear el controlador dentro del subproceso que no ha llamado looper.prepare ()
Aquí está mi clase de temporizador de Android que debería funcionar bien. Envía una señal cada segundo. Cambiar horario () llamada es que desea un esquema diferente.
Tenga en cuenta que no puede cambiar las cosas gui de Android en el subproceso del temporizador, esto sólo se permite en el subproceso principal. Esta es la razón por la que tiene que utilizar un controlador para devolver el control al hilo principal.
import java.util.ArrayList; import java.util.List; import java.util.Timer; import java.util.TimerTask; import android.os.Handler; import android.os.Message; public class SystemTimerAndroid { private final Timer clockTimer; private class Task extends TimerTask { public void run() { timerHandler.sendEmptyMessage(0); } } private final Handler timerHandler = new Handler() { public void handleMessage (Message msg) { // runs in context of the main thread timerSignal(); } }; private List<SystemTimerListener> clockListener = new ArrayList<SystemTimerListener>(); public SystemTimerAndroid() { clockTimer = new Timer(); clockTimer.schedule(new Task(), 1000, 1000); } private void timerSignal() { for(SystemTimerListener listener : clockListener) listener.onSystemTimeSignal(); } public void killTimer() { clockTimer.cancel(); } @Override public void addListener(SystemTimerListener listener) { clockListener.add(listener); } }
Una forma podría ser la creación de un hilo de Pipeline (un hilo normal con Looper.prepare ()). Enviar mensajes retrasados a su bucle de mensajes. En el controlador de mensajes, intercambie las imágenes. Vea la siguiente lista de tutoriales para entender las entidades involucradas:
Tutorial del manejador
Manipulador: documentación
Android guts en Loopers (hilos de Pipeline) y Handlers
Espero que ayude.
- ¿Cómo deshacerse de la depreciación de código?
- onPreviewFrame y la superficie de bloqueo de excepción