¿Puedo bloquear una tabla SQLite para el subproceso actual?

Mi aplicación gestiona todos sus datos en un SQLiteDatabase al que se accede mediante un número de subprocesos.

En este momento he estado manteniendo todas mis llamadas de base de datos sincronizadas en la propia base de datos.

La razón por la que quiero hacer esto es que de vez en cuando quiero actualizar la tabla mediante la captura de la versión más reciente de un servidor y la reconstrucción de la tabla de stratch. Para ahorrar tiempo en realidad estoy haciendo una segunda tabla y luego reemplazar el original cuando estoy hecho (bloqueo con una sincronización mientras estoy haciendo esto).

El problema es que de vez en cuando tengo mis llamadas SQL callar durante un largo tiempo (debido a los bloqueos síncronos) o me sale un error cuando una llamada SQL intenta ejecutarse en el breve período cuando mi tabla se está copiando.

¿Hay una era para mí para bloquear mi base de datos de otras operaciones mientras se actualiza, pero dejar que las operaciones A, B, C, etc correr simultáneamente?

¡Aclamaciones!

Estoy bastante seguro de lo que quieres es un ReadWriteLock . Básicamente, pone dos cerraduras diferentes en su base de datos, una para leer y otra para escribir. Mientras que el bloqueo de escritura está bloqueado, nadie más puede leer o escribir. Si alguno de los bloqueos de lectura está bloqueado (por cualquier número de subprocesos), el bloqueo de escritura no podrá bloquearse hasta que todos hayan terminado de leer.

  • ¿Cómo comprobar si existe una tabla en Android?
  • Malo rendimiento de SQLite en almacenamiento externo en Android
  • Android Guardar imágenes en una tarjeta de memoria o en una tarjeta SD
  • Devuelve el recuento de registros en una variable, Sqlite, Android, Java
  • ¿Es la operación costosa de SQLite cursor.getCount en Android
  • SQLiteConstraintException: código de error 19: falla de restricción
  • Error de SQLiteOpenHelper
  • Cómo realizar una prueba de unidad de migración de base de datos entre versiones
  • Cómo almacenar la contraseña SQLcipher localmente
  • Android - SQLiteException: near "=": error de sintaxis (código 1)
  • Almacenamiento de datos grandes local o en línea para la aplicación de Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.