Threading de ContentProvider
Sólo curioso.
getContentResolver().query(...)
Sé que los cargadores ejecutar consultas sobre los hilos de fondo. ¿Esto también se aplica a inserciones, actualizaciones y eliminaciones? ¿Debo crear AsyncTasks, Hilos, etc … para este tipo de llamadas? Las actualizaciones grandes podrían bloquear el hilo principal de mi aplicación.
- ¿Debo importarme la diferencia entre el hilo principal y el hilo de UI en Lollipop y más allá?
- Prueba unitaria de interfaz de usuario asíncrono con Espresso, IdlingResource falla con condición de carrera
- Leer datos de sqlite cuando se está ejecutando una transacción (Android)
- ¿Cómo puedo ejecutar esta clase en el hilo de interfaz de usuario?
- Libgdx utiliza ScreenUtils de forma asincrónica y no detiene el bucle del juego
getContentResolver().insert(...)
¡Gracias!
- Android - Dibujo fuera de pantalla de un hilo sin interfaz de usuario
- Handler to Handler VERSUS Mensajería para Messenger en Android
- ¿Por qué los subprocesos nativos se comportan de forma diferente cuando la aplicación está en segundo plano?
- ¿Es esta la forma correcta de obtener el efecto de rizo en los dispositivos pre-piruletas?
- ¿Puedo tener un ejemplo de mostrar un brindis usando runOnUiThread.
- Lanzar null pointerException en Timer.Schedule ();
- La aplicación se bloquea y muestra un error en el hilo (señal fatal)
- Thread, Asynctask o intentService para mi aplicación?
De los elementos básicos del proveedor de contenido
Recuperación de datos del proveedor
Esta sección describe cómo recuperar datos de un proveedor, utilizando el proveedor de diccionario de usuario como ejemplo.
Para mayor claridad, los fragmentos de código en esta sección llaman a ContentResolver.query () en el "subproceso UI" .En el código real, sin embargo, debe hacer consultas de forma asincrónica en un subproceso separado.Una manera de hacerlo es utilizar La clase CursorLoader, que se describe con más detalle en la guía Loaders, además, las líneas de código son sólo fragmentos, pero no muestran una aplicación completa.
Los Loaders sólo funcionan para consultas, es decir, cargando datos en Actividades o Fragmentos, aparte de insert / update / delete.
Además de Loader, disponible desde Android 3.0, android proporcionó una clase auxiliar AsyncQueryHandler , desde el nivel 1 de la API, para operaciones CRUD asíncronas con operaciones de devolución de llamada CRUD completas.
El AsyncQueryHandler trabaja dentro con un HandlerThread para las operaciones asíncronas y entrega los resultados al hilo principal. El uso de AsyncTask o simples subprocesos de trabajo también son prácticas populares en términos de requisitos particulares.
Cuando dice Loaders ejecutar consultas sobre subprocesos de fondo, debe comprender que son las implementaciones de la clase Loader las que realizan las consultas en el subproceso de fondo.
La consecuencia de esto es que querrás usar o extender e implementar subclases de la clase abstracta de Loader y no usar threads AsyncTask o Java. La razón es cuando usted crea un cargador, espera que usted devuelva una instancia del tipo Cargador. Un hilo de Java o un AsyncTask no se puede utilizar para esto. Las subclases de la clase Loader lo hacen iniciando su propio subproceso. La clase cliente o la clase que crea el cargador sólo inicializa el cargador. La instancia actual de Loader puede hacer lo que quiera que haga. Esto puede ser cualquier cosa: insertar, actualizar, eliminar, etc. La implementación de Android CursorLoader consulta datos de tablas en un subproceso de fondo de forma asincrónica y devuelve el conjunto de resultados. Android no proporciona implementaciones nativas similares para insertar o actualizar datos. Lo que tienes es la opción de extender desde AsyncTaskLoader (la misma clase que CursorLoader hereda de).
Además, tenga en cuenta que los cargadores se utilizan para optimizar el acceso a la base de datos y, como tal, proporcionará publicar el resultado en el hilo principal sólo cuando hayan completado su tarea y no antes (hay un hack como solución para publicar actualizaciones a la interfaz de usuario de hilo Pero entonces esto rompe el paradigma). Los cargadores sólo se preocupan por completar su trabajo y no están interesados en proporcionar ninguna actualización.
Si simplemente desea gestionar las consultas de ContentProvider de forma asíncrona, puede considerar utilizar la clase AsyncQueryHandler suministrada por Android.
- ¿Puede el NDK de Android compilar la fuente del módulo del kernel?
- Android finaliza el subproceso en el servicio y la actualización de la interfaz de usuario