para que sirve settitle en java
¡Se ha filtrado un objeto SQLiteConnection para la base de datos! Por favor arregla tu aplicación (5)
Mi aplicación me da esta advertencia
Se ha filtrado un objeto SQLiteConnection para la base de datos ''+ data + data + com_example_test + database''. Corrija la aplicación para finalizar correctamente las transacciones en curso y cierre la base de datos cuando ya no sea necesaria.
Pero cierro el objeto db y el cursor después de cada uso.
try {
while (cursor.moveToNext()) {
...
}
} finally {
if (cursor != null && !cursor.isClosed())
cursor.close();
}
...
db.close();
¿Me pueden ayudar a entender cuál es el problema? ¡¡¡Gracias!!!
¡ACTUALIZAR! Intento esta solución desde esta conexión de SQLite filtrada aunque todo cerrado
y ya no tengo fuga de memoria, ¿es una buena solución?
En mi caso, el error se produjo cuando intentaba descargar datos nuevos y la base de datos debería actualizarse.
Lo resolví creando una instancia de la base de datos llamando a SELECT 0
. Eso causa que la base de datos se actualice, así que después de eso intento descargar los nuevos datos. Y funcionó bien
Probablemente se olvidó de eliminar el punto de corte de la muestra de depuración: introduzca la descripción de la imagen aquí
Simplemente arrastre ese db.close
hacia el bloque finally
.
Posibles soluciones :
- No ha
not committed the transactions
que inició (siempre debe cerrar la transacción una vez que comenzó) - Compruebe si ha cerrado los cursores que ha abierto si está utilizando
Sqlite
(Parece que ha realizado este paso desde el código que ha publicado) - Mueva también el
db.close
parafinally
bloquear - No ha llamado a
db.close
en una base de datos antes de eliminarlo concontext.deleteDatabase(...)
y luegodbHelper.getWritableDatabase()
adbHelper.getWritableDatabase()
condbHelper.getWritableDatabase()
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
public class MainActivity extends AppCompatActivity {
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.main_menu, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
switch (item.getItemId()){
case R.id.settings:
Log.i("Menu item selected", "Settings");
return true;
case R.id.help:
Log.i("Menu item selected", "Help");
return true;
default:
return false;
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
Me está dando error de fuga de objeto de base de datos. Aunque la aplicación funciona bien y también se registra en la pestaña Ejecutar, el monitor de Android me muestra el error y no registra la información.