A SQLiteConnection object for database was leaked! Please fix your application
My application give me this warning
A SQLiteConnection object for database '+data+data+com_example_test+database' was leaked! Please fix your application to end transactions in progress properly and to close the database when it is no longer needed.
But I close the db object and the cursor after every use.
try {
while (cursor.moveToNext()) {
...
}
} finally {
if (cursor != null && !cursor.isClosed())
cursor.close();
}
...
db.close();
Can you help me for understand what is the problem? thanks!!!
UPDATE! I try this solution from this post SQLite Connection leaked although everything closed
and I don't have memory leak anymore, is it a good solution?
Possible Solutions:
- You have
not committed the transactions
you have started (You should always close the transaction once you started) - Check whether you have closed the cursors you have opened if you are
using
Sqlite
(Looks like you have done this step from the code you posted) - Also move the
db.close
tofinally
block - You have not called
db.close
on a database before deleting it withcontext.deleteDatabase(...)
and then recreating it withdbHelper.getWritableDatabase()
Just drag that db.close
up into the finally
block.
//Inside your SQLite helper class
@Override
public synchronized void close () {
if (db != null) {
db.close();
super.close();
}
}
//Inside the activity that makes a connection to the helper class
@Override
protected void onDestroy () {
super.onDestroy();
//call close() of the helper class
dbHelper.close();
}