Pregunta

¿Cómo se accede a una base de datos SQLiteDatabase en un hilo separado (es decir: un AsyncTask) de un Activity y asegúrese de que siempre se deja en un estado legal

?

Si entiendo correctamente, el hilo se puede matar en cualquier momento y la base de datos podría permanecer abierta, lo que podría dar una IllegalStateException ( SQLiteDatabase creado y nunca cerrado ) a una última vez.

¿Cómo lidiar con esto?

¿Fue útil?

Solución

Si su AsyncTask es administrado por su Activity, entonces Activity puede cancelar AsyncTask en el momento adecuado (cuando se convierte en vulnerables a ser matado por el sistema operativo, por ejemplo, después Activity.onPause()) por lo AsyncTask.onCancelled() será llamado en el que puede cerrar la base de datos.

Si su AsyncTask (o una Thread) no es administrado por su Activity entonces su están en problemas y debe considerar el rediseño de su arquitectura.

Otros consejos

Dos maneras:

  1. Puede registrar un Runtime.addShutdownHook(..) y cerca de la base de datos existe.

  2. Crea Application personalizada e implementar onLowMemory() donde se cierra la base de datos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top