¿Existe un caché de memoria para SQLite en Android y cómo liberarlo o borrarlo?

En primer lugar, creo una base de datos llamada "mydb" en mi aplicación para Android:

DBHelper dbHelper = new DBHelper(context, "mydb", null, 1);//DBHelper is my custom class 

Y escribir algunos datos en su tabla:

 SQLiteDatabase db = dbHelper.getReadableDatabase(); db.execSQL("insert into mytable(name, text) values ('allen','hello')"); 

Aquí, todo está bien. Pero luego, eliminar esta base de datos manualmente no por la programación, con un software "RE explorar" (Ciertamente en un dispositivo con raíz).

Entonces, en mi código, leo esta tabla de la base de datos. Lo que es sorprendente es que todavía podría obtener los datos que almacene.

 Cursor cursor = db.query("mytable", new String[]{"name","text"}, null, null, null, null, null); 

¿Por qué?

3 Solutions collect form web for “¿Existe un caché de memoria para SQLite en Android y cómo liberarlo o borrarlo?”

Citando desde el sitio web de referencia de Android Developers:

Una vez abierto correctamente, la base de datos se almacena en caché , por lo que puede llamar a este método cada vez que necesite escribir en la base de datos. (Asegúrese de llamar a close () cuando ya no necesite la base de datos.)

Esto es a partir de la descripción del método getWritableDatabase() , sin embargo, tanto getReadableDatabase() como getWritableDatabase() devuelven básicamente el mismo objeto para leer la base de datos.

Tenga en cuenta que debe utilizar getWritableDatabase() si desea conservar los cambios que realice en la base de datos en la memoria interna del dispositivo. De lo contrario, sólo serán válidos durante el tiempo de ejecución de la aplicación y se descartarán una vez que la aplicación esté cerrada. Si desea eliminar completamente la base de datos, debe llamar al método close() SQLiteDatabase para invalidar la caché.

Debe eliminar la aplicación del teléfono y volver a instalarla.

Utilice la SQLiteDatabase.deleteDatabase(File file) para eliminar la base de datos

Elimina una base de datos que incluye su archivo de diario y otros archivos auxiliares que pueden haber sido creados por el motor de base de datos.

Asegúrese de haber cerrado todas las conexiones que están abiertas.

En caso de que no son capaces de hacer eso, simplemente cal el deleteDatabase seguido por el proceso de matar .. – no recomendado

  • Android SQLite ORDER BY no funciona
  • SQLite Random () En ORDER BY no se está clasificando correctamente
  • Android cifrar / descifrar sqlite base de datos 100% seguro
  • SQLite Android: parámetro nullColumnHack en los métodos insert / replace
  • Cómo y dónde agregar el archivo sqlite (.db) en un proyecto de android
  • Cierre de la base de datos en un ContentProvider
  • Java - java.lang.IllegalStateException: No se pudo leer la fila 0, col -1 de CursorWindow
  • Android sqlite eliminar consulta no funciona
  • Necesita ayuda para leer de la base de datos SQLite para Android
  • ¿Los campos de datos SQLite null ocupan más memoria?
  • Android: sqlite: cursor: getColumnIndex
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.