Loader y LoaderManager – ¿Cómo determinar si un cargador actual está activo y en ejecución?

¿Cómo se puede consultar un LoaderManager para ver si un Loader se está ejecutando actualmente?

Llame a getLoaderManager() en su actividad ( Fragment ), encuentre su Loader y llame a isStarted() , suponiendo que eso es lo que quiere decir con "ejecutar".

Hay dos situaciones posibles de hacerlo:

1er caso

Si utiliza el único cargador o tiene varios, pero no le importa cuál de ellos está ejecutando:

 getSupportLoaderManager().hasRunningLoaders() 

Segundo caso

Desea saber si se está ejecutando un Loader particular. Parece que no es compatible con SDK, pero puede implementarlo fácilmente por su cuenta.

A) Simplemente agregue la bandera

 public class SomeLoader extends AsyncTaskLoader<String[]> { public boolean isRunning; @Override protected void onStartLoading() { isRunning = true; super.onStartLoading(); //... forceLoad(); } @Override public void deliverResult(String[] data) { super.deliverResult(data); isRunning = false; } //... } 

B) y usarlo (un poco complicado) 🙂

 SomeLoader loader = (SomeLoader) manager.<String[]>getLoader(ID); Log.d(TAG, "isRunning: " + loader.isRunning); 

La razón principal por la que he publicado aquí – es una llamada bastante complicada de un método genérico antes de lanzar un Loader a su SomeLoader .

Recordatorio

Lo que haga si llama a getSupportLoaderManager.restartLoader su tarea actual (si está en ejecución) no se está matando. Así que el siguiente paso será una llamada de onCreateLoader que creará un nuevo Loader . Por lo tanto, significa que puede tener 2,3,4,5 y más tareas paralelas tareas juntas (si no lo previene de alguna manera) que puede conducir a una batería de drenaje y una carga de CPU / red superior.

Utilizar:

 getLoaderManager().getLoader(id) 

Si existe devolver el cargador, a continuación, llamar a isStarted() para comprobar su ejecución.

  • Error en LoaderManager al utilizar la biblioteca de soporte
  • Algunas preguntas sobre los cursores de la base de datos SQLite en Android
  • Poblar listview de ListAdapter o SimpleCursorAdapter
  • Android FragmentPagerAdapter con LoaderManager
  • Android: CursorLoader falla en Fragmento no superior
  • Utilizar un Cursor devuelto desde un LoaderManager en un AsyncTask
  • Error al utilizar CursorLoader para cargar datos de ContentProvider
  • Error: java.lang.NullPointerException en android.support.v4.content.Loader
  • AlphabetIndexer con adaptador personalizado administrado por LoaderManager
  • ¿Debe usar los cargadores para acceder a servicios web?
  • ¿Cuáles son los beneficios de CursorLoaders?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.