¿Dónde puedo crear y usar ScheduledThreadPoolExecutor, TimerTask o Handler?

Tengo que hacer que mi lector de RSS Feed verifique el feed cada 10 minutos para los nuevos mensajes, y luego analizarlos si hay nuevos. También necesito actualizar la interfaz de usuario sobre cada minuto.

He leído y escuchado cosas diferentes de varias fuentes. Mi comprensión actual es que puedo utilizar ScheduledThreadPoolExecutor para hacer dos hilos programados, y uno de ellos necesita un Handler para actualizar la interfaz de usuario. No estoy seguro de cuál es el uso más eficiente de estas clases o TimerTask .

También estoy muy inseguro acerca de dónde hacer subclases de estos. Un amigo sugirió extender TimerTask como una clase interna en mi clase FeedParser para hacerlo más sencillo. Sin embargo, para implementarlo de esa manera, tengo que usar el método run() para TimerTask sin TimerTask , lo que significa que no puedo simplemente usar los parámetros que necesito para las funciones que necesitan ejecutarse.

En resumen, ¿cuál es la mejor manera de programar las tareas para esto, y dónde implementar éstos?

Prefiero usar ScheduledThreadPoolExecutor. Generalmente, si entiendo sus requisitos correctamente, todos estos se pueden implementar en su actividad, TimerTask y Handler no son necesarios, vea el código de ejemplo a continuación:

 public class MyActivity extends Activity { private ScheduledExecutorService scheduleTaskExecutor; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); scheduleTaskExecutor= Executors.newScheduledThreadPool(5); // This schedule a task to run every 10 minutes: scheduleTaskExecutor.scheduleAtFixedRate(new Runnable() { public void run() { // Parsing RSS feed: myFeedParser.doSomething(); // If you need update UI, simply do this: runOnUiThread(new Runnable() { public void run() { // update your UI component here. myTextView.setText("refreshed"); } }); } }, 0, 10, TimeUnit.MINUTES); } // end of onCreate() } 

Recuerda terminar / cerrar tu tarea ejecutable correctamente en Activity.onDestroy (), espero que ayude.

  • Android: Acceso al elemento de interfaz de usuario desde el subproceso del temporizador
  • Android Handler para la tarea repetida - se superpone? Temporizador-tarea VS manejador VS alarma-administrador
  • Cómo detener un temporizador después de cierto número de veces
  • Obtención de metadatos de SHOUTcast utilizando IcyStreamMeta
  • Temporizador La tarea deja de ejecutarse después de un tiempo indefinido en android
  • Android no puede crear el controlador dentro del subproceso que no ha llamado looper.prepare ()
  • Intentar invocar método virtual
  • Hace TimerTask ejecutando en nuevo hilo
  • Detener temporizador sin destruir y volver a crear - Android
  • Cómo llamar a onUpdate () en AppWidgetProvider?
  • Lanzar null pointerException en Timer.Schedule ();
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.