Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿Se puede utilizar un LoaderManager de un servicio?

Tengo un sistema de carga de datos configurado usando un cargador y un cursor de encargo que esté trabajando grande de actividades y de fragmentos pero no hay LoaderManager (que puedo encontrar) en servicio. ¿Alguien sabe por qué LoaderManager se excluyó del servicio? Si no es hay una manera de evitar esto?

2 Solutions collect form web for “¿Se puede utilizar un LoaderManager de un servicio?”

¿Alguien sabe por qué LoaderManager se excluyó del servicio?

Como se indicó en la otra respuesta, LoaderManager fue diseñado explícitamente para gestionar Loaders través de los ciclos de vida de Acivities y Fragments . Dado que los Services no tienen estos cambios de configuración para tratar, no es necesario usar LoaderManager .

Si no es hay una manera de evitar esto?

Sí, el truco es que no necesitas usar LoaderManager , solo puedes trabajar directamente con tu Loader , que manejará asincrónicamente cargando tus datos y supervisando cualquier cambio de datos subyacente para ti, lo cual es mucho mejor que consultar tus datos manualmente.

Primero, cree, registre y comience a cargar su Loader cuando se cree su Service .

 @Override public void onCreate() { mCursorLoader = new CursorLoader(context, contentUri, projection, selection, selectionArgs, orderBy); mCursorLoader.registerListener(LOADER_ID_NETWORK, this); mCursorLoader.startLoading(); } 

A continuación, implemente OnLoadCompleteListener<Cursor> en su Service para manejar las devoluciones de llamada de carga.

 @Override public void onLoadComplete(Loader<Cursor> loader, Cursor data) { // Bind data to UI, etc } 

Por último, no olvide limpiar su Loader cuando el Service se destruye.

 @Override public void onDestroy() { // Stop the cursor loader if (mCursorLoader != null) { mCursorLoader.unregisterListener(this); mCursorLoader.cancelLoad(); mCursorLoader.stopLoading(); } } 

Lamentablemente no. Los cargadores fueron diseñados para actividades y fragmentos con el fin de limpiar los cambios de configuración que se producen en Activites y Fragmentos. Es decir, girar el dispositivo y volver a conectarlo a los datos existentes.

Un servicio no tiene ningún cambio de configuración, se sentará en el fondo hasta que se complete o el sistema se ve obligado a matarlo. Así que suponiendo que está ejecutando su código en un hilo de fondo en su Servicio (que debe ser de todos modos), no hay razón para utilizar un cargador. Simplemente haga las llamadas que necesita para consultar sus datos.

Así que si su Servicio es sólo un IntentService, puede escribir su lógica para consultar sus datos con el cursor en el método onHandleIntent ().

http://developer.android.com/guide/components/loaders.html

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.