La base de datos SQLite de Android está bloqueada

Tengo un servicio atado que funciona con varios hilos que leen y escriben en una base de datos de SQLite. Creo una instancia de mi ayudante de base de datos y obtener una conexión a la base de datos en el onCreate de mi servicio, que debe ejecutarse en el hilo principal. Como es un servicio enlazado, sólo debe haber una instancia del servicio en la memoria. Sin embargo, todavía obtener excepciones ocasionalmente cuando el servicio intenta abrir la base de datos o cuando uno de los hilos intenta ejecutar una sentencia.

Código de servicio:

@Override public void onCreate() { super.onCreate(); MyDatabaseHelper helper = new MyDatabaseHelper(this); database = helper.getWritableDatabase(); } 

Excepciones:

 java.lang.RuntimeException: Unable to create service uk.co.example.service.MyService: android.database.sqlite.SQLiteException: unable to open database file at android.app.ActivityThread.handleCreateService(ActivityThread.java:1959) at android.app.ActivityThread.access$2500(ActivityThread.java:117) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:989) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:123) at android.app.ActivityThread.main(ActivityThread.java:3691) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:507) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605) at dalvik.system.NativeStart.main(Native Method) Caused by: android.database.sqlite.SQLiteException: unable to open database file at android.database.sqlite.SQLiteDatabase.dbopen(Native Method) at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1960) at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:887) at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:965) at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:958) at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:585) at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203) at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:118) at uk.co.example.service.MyService.onCreate(MyService.java:69) at android.app.ActivityThread.handleCreateService(ActivityThread.java:1949) ... 10 more android.database.sqlite.SQLiteException: error code 5: database is locked at android.database.sqlite.SQLiteStatement.native_execute(Native Method) at android.database.sqlite.SQLiteStatement.execute(SQLiteStatement.java:61) at uk.co.example.aaaa(MyTable.java:147) at uk.co.example.service.bamrun(MySaveTask.java:84) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581) at java.lang.Thread.run(Thread.java:1019) 

¿Alguna idea de que puede estar causando esto?

Gracias

David

Sqlite ahora soporta un nuevo modo de diario llamado Escritura-Ahead Logging, que es adecuado para el acceso concurrente a sqlite. puede que desee echar un vistazo a http://www.sqlite.org/wal.html .

  • SQLite - No se pudo abrir el archivo de base de datos
  • Cómo eliminar las viejas filas de la base de datos sqlite en android?
  • Cómo utilizar un script para consultar la base de datos android sqlite
  • Android monta el sistema de archivos con permiso de escritura
  • Optimización de SQLite para aplicaciones de Android
  • Sqlite3_open_v2 ("/ data / data / com.android.packagename / databases / dump.sqlite", & handle, 1, NULL) falló
  • Consulta del proveedor de contenido de Android cláusula IN
  • Android SQLite ON CONFLICT UPDATE es posible?
  • Carácter turco en SQLite mientras utiliza la expresión LIKE
  • Cómo borrar un Android ListView y llenarlo con nuevos datos?
  • Actualizar archivo apk en Google Play
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.