2011-03-10 9 views
11

La última vez que se hizo esta pregunta (por un usuario diferente), la respuesta respuesta fue:tarea regular de Android (cronjob equivalente)

Si esta es una actividad en funcionamiento, se puede usar temporizador/TimerTask y un Manejador, o puede usar postDelayed() y una AsyncTask.

aquí: Android Repetitive Task

Todavía estoy aprendiendo a programar Android. He estudiado las habilidades que conozco, incluidos los hilos, y tuve muchos problemas con mi código. ¿Alguien puede dar un ejemplo de cómo usar: hora/cronometraje y controlador O postDelayed() y AsyncTask.

Gracias de antemano :)

Respuesta

4

Si usted quiere construir un corredor tarea programada entonces lo que quieres es un Service:

Un servicio es un componente de aplicación que puede realizar operaciones de larga duración en el fondo y no lo hace proporcionar una interfaz de usuario Otro componente de la aplicación puede iniciar un servicio y continuará ejecutándose en segundo plano, incluso si el usuario cambia a otra aplicación. Además, un componente puede vincularse a un servicio para interactuar con él e incluso realizar una comunicación entre procesos (IPC). Por ejemplo, un servicio puede manejar transacciones de red, reproducir música, realizar E/S de archivos o interactuar con un proveedor de contenido, todo desde el fondo.

+3

Un servicio no es muy parecido a un cronjob, consulte la respuesta a continuación sobre AlarmManager. – alexanderblom

21

Para Cron como las tareas que tienen que utilizar AlarmManager, este es un servicio del sistema, para utilizarlo en su código es necesario llamar a:

docs
AlarmManager myAlarmManager = Context.getSystemService(Context.ALARM_SERVICE). 

completos sobre AlarmManager here.

+0

Cómo establecer la repetición para el administrador de alarmas SI tengo una expresión cron ?! –

4

El enfoque más adecuado es a través de los servicios. Aprendí cómo escribir servicios mirando el código fuente de la aplicación de correo electrónico estándar que se incluye con Android.

La idea general es que anule la clase Service y configure alarms para activar su servicio. A diferencia de los daemons y los servicios de Windows, los servicios de Android no siempre se ejecutan: se inician (generalmente cuando se activan mediante una alarma), funcionan y luego se apagan. En algunos casos, es posible que necesite adquirir un partial wake lock para mantener el servicio en funcionamiento hasta que complete la tarea; de lo contrario, Android puede cancelar su servicio prematuramente.

+0

¿Qué hace mientras el servicio (de fondo) está actualizando la base de datos y el usuario accede a la aplicación para abrirla? – Skynet

+0

¿Por qué eso haría alguna diferencia? [SQLite es una base de datos transaccional] (http://www.sqlite.org/transactional.html) con soporte completo de ACID – Melllvar

+0

Pero, ¿qué sucede si los datos que se muestran en su vista actual se han quedado obsoletos, digamos un minuto antes de que el servicio comience a actualizar los datos? – Skynet