Custom AsyncTaskLoader, loadinBackground no se llama después de 5 intentos
Tengo un SherlockListFragment
que implementa un AsyncTaskLoader
personalizado. En el onStartLoading()
, tengo:
@Override protected void onStartLoading() { if (mData != null) { deliverResult(mData); } else{ forceLoad(); } }
El contenedor SherlockListFragment
inicia el cargador en onActivityCreated
:
- AsyncTaskLoader no se ejecuta
- Cómo pasar params a Android AsnycTaskLoader
- Actualizar la barra de progreso de AsyncTaskLoader?
- AsyncTaskLoader personalizado con caché
- Explique AsyncTaskLoader
@Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); mAdapter = new MyListAdapter(getActivity()); setListAdapter(mAdapter); getLoaderManager().initLoader(0, null, this); }
Y:
@Override public Loader<List<MyData>> onCreateLoader(int id, Bundle args) { return new MyListLoader(getActivity()); }
El problema es que después de 5 activaciones / navegaciones a mi FragmentActivity, loadinBackground()
no se llama. El onStartLoding
se llama, así como el forceLoad
, pero eso es todo. Ninguna excepción, nada en el LogCat.
¿Algunas ideas?
- ¿Cómo funciona la cancelación de un AsyncTaskLoader?
- Diferencia real entre AsyncTask y Thread
- Cómo manejar los errores en AsyncTaskLoader personalizado?
- AsyncTaskLoader onLoadFinished con un cambio de tarea y configuración pendiente
- Actualizar la interfaz de usuario desde un AsyncTaskLoader
- Cómo saber si AsyncTaskLoader se está ejecutando
- Volley o ASyncTaskLoader
- Tipos incompatibles en el método onCreateLoader que trabaja con AsyncTaskLoader y Fragment
Está bien llamar a forceLoad () .
Vea qué documentación dice :
Por lo general, sólo debe llamar a esto cuando el cargador se inicia – es decir, isStarted () devuelve true.
Código completo:
@Override protected void onStartLoading() { try { if (data != null) { deliverResult(data); } if (takeContentChanged() || data == null) { forceLoad(); } Log.d(TAG, "onStartLoading() "); } catch (Exception e) { Log.d(TAG, e.getMessage()); } }
Importante:
La documentación dice : Las subclases de Loader<D>
generalmente deben implementar al menos onStartLoading (), onStopLoading (), onForceLoad () y onReset () .
AsyncTaskLoader extiende Loader pero no implementa onStartLoading (), onStopLoading (), onReset () . Usted debe implementarlo por usted mismo!
PS Me confundió con él después de la experiencia de usar CursorLoader simple, también pensé que usar forceLoad () es mala práctica. Pero no es cierto.
- Error en la generación yasm / source / patched-yasm / util.h: 78: 23: error: libintl.h: Ningún archivo o directorio
- Android: Actividad de llamada de otra aplicación