sqlite – Cursor finalized without prior close() Android-ThrowExceptions

Exception or error:

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:

It occurs when I go from line 20 to 21.

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 🙂

How to solve:

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())
       if( db.isOpen() )
    } catch(Exception ex) {}

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


to find such problems just enable StrictMode for Debug Version like that:

public void onCreate() {
     if (DEVELOPER_MODE) {
         StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
                 .detectNetwork()   // or .detectAll() for all detectable problems
         StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()

more information @

all the best,


Always, remember to close the cursor by calling cursor.close() before closing the database. That should fix your problem.


let the activity manage the cursor lifecycly by using startManagingCursor(c) and it will be fine.

Leave a Reply

Your email address will not be published. Required fields are marked *