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?
- AsyncTaskLoader no llama a onLoadFinished a menos que devuelva un nuevo objeto en loadInBackground
- Múltiples cargadores con LoaderManager, no consiguiendo derecho Cargador
- IllegalStateException "intenta volver a abrir un objeto ya cerrado" en SimpleCursorAdapter de ContentProvider
- Cuando una actividad se destruye debido a un cambio de configuración, ¿también se destruyen sus cargadores?
- Android Loader no activa las devoluciones de llamada en la pantalla
- Paquete de compatibilidad de Android - fragmento ... no conectado a la actividad
- Android Fragment - Utilizar el gestor de carga de la actividad en lugar de Fragmento. ¿Está bien?
- Filtro ListView con CursorLoader y CursorAdapter personalizado
- Cómo convertir cursorLoader en Loader <Object>
- ¿Por qué onLoadFinished se llama de nuevo después de que se reanude el fragmento?
- Loader no se inicia después de llamar a initLoader ()?
- Android: CursorLoader, LoaderManager, SQLite
- ¿Cómo puedo actualizar el cursor desde un CursorLoader?
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.
- ListView ignorando wrap_content
- Cómo guardar la imagen en preferencia compartida en Android | Problema de preferencia compartida en Android con Image