Cursor finalized without prior close() Android

Timon Devos picture Timon Devos · May 3, 2012 · Viewed 29.5k times · Source

In my application I have a listview. I get my data with a query from a SQLiteDatabase. When I get the data from the db I get this error: error

It occurs when I go from line 20 to 21. occur

I tried placing cursor.deactivate() and cursor.close() on regel 50. But with no result. Anyone knows why I get this error and how to solve it? Thanks :)

Answer

Ali Behzadian Nejad picture Ali Behzadian Nejad · May 3, 2012

You have to close the cursor before the database. Put your code in a try / catch block and in a finally block, close the cursor and then close the database:

try {
    db = ...
} catch(Exception ex) { 
    // Log the exception's message or whatever you like
} finally {
    try {
      if( cursor != null && !cursor.isClosed())
        cursor.close();
       if( db.isOpen() )
        db.close();
    } catch(Exception ex) {}
}

Closing sequence matters a lot while doing IO with DB or Content Providers. For more information refer this link