threads thread android service android-asynctask runnable timertask

thread - Android Asynctask vs Runnable vs timertask vs Service



javafx thread sleep (1)

¿Cuáles son las diferencias entre estos métodos (clases)?

Quiero ejecutar una aplicación que se ejecuta cada 5 segundos, borre la memoria cuando haya terminado y cuando la CPU esté en modo de espera, para que pueda ejecutar la aplicación. Para que la aplicación no esté vinculada a un wakelock.

Saludos,

Shafqat


La diferencia entre los tres primeros es la cantidad de trabajo que se ha hecho por usted. Y un Service es un componente fundamental de la aplicación de Android .

AsyncTask como clase de conveniencia para realizar un trabajo en un nuevo subproceso y utilizar los resultados en el subproceso desde el que se llamó (normalmente el subproceso de la interfaz de usuario) cuando haya terminado. Es solo un contenedor que usa un par de runnables pero maneja todas las complejidades de crear el hilo y manejar los mensajes entre los hilos.

La interfaz Runnable encuentra en el núcleo de los subprocesos de Java. La interfaz Runnable debe ser implementada por cualquier clase cuyas instancias estén destinadas a ser ejecutadas por un hilo.

TimerTask es parte de Java estándar y se puede usar para la ejecución retrasada o repetida de algún fragmento de código (Ejecutable). Se desaconseja su uso en Android . Puedes usar un Handler en su lugar.

Un servicio puede usarse como parte independiente y sin interfaz de usuario de su aplicación de Android. Puede ejecutarse y crear sus propios subprocesos y puede iniciarse para UI o con Intenciones a través de un AlarmManager por ejemplo.

Piensa que lo que quieres es un Servicio que crea su propio hilo y hace algunos trabajos. Cuando el trabajo haya finalizado, la memoria se liberará en Android cuando se active el recolector de basura, algo que no controlas y eso es bueno.

El AlarmManager le permite transmitir intenciones a intervalos específicos e incluso permitir que el control active el dispositivo o no. Solo tiene que definir un BroadcastReceiver en su Servicio y declararlo en su manifiesto.

No entiendo realmente la última parte de su pregunta, así que aclare un poco más sobre lo que está intentando lograr.