Android la base de données Ne peut pas effectuer cette opération, car le pool de connexion a été fermée

J'ai un problème étrange avec android de base de données et les curseurs. De temps en temps (très rarement) se produit, que j'ai eu rapport de crash de clients. Il est difficile de savoir pourquoi il se bloque, comme je l'ai ~ 150 000 utilisateurs actifs et peut-être 1 rapport par semaine, donc c'est vraiment un bug mineur. Voici exception:

STACK_TRACE=java.lang.IllegalStateException: Cannot perform this operation because the connection pool has been closed.
at android.database.sqlite.SQLiteConnectionPool.throwIfClosedLocked(SQLiteConnectionPool.java:962)
at android.database.sqlite.SQLiteConnectionPool.waitForConnection(SQLiteConnectionPool.java:599)
at android.database.sqlite.SQLiteConnectionPool.acquireConnection(SQLiteConnectionPool.java:348)
at android.database.sqlite.SQLiteSession.acquireConnection(SQLiteSession.java:894)
at android.database.sqlite.SQLiteSession.executeForCursorWindow(SQLiteSession.java:834)
at android.database.sqlite.SQLiteQuery.fillWindow(SQLiteQuery.java:62)
at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:144)
at android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:133)
at sk.mildev84.agendareminder.a.c.a(SourceFile:169)

Avant chaque curseur "de retravailler et d'exploration de" j'utilise ce code pour s'assurer que tout est ok:

db = instance.getWritableDatabase();
cursor = db.rawQuery(selectQuery, null);

if (isCursorEmptyOrNotPrepared(cursor)) {
    ...
    }

private synchronized boolean isCursorEmptyOrNotPrepared(Cursor cursor) {
        if (cursor == null)
            return true;

        if (cursor.isClosed())
            return true;

        if (cursor.getCount() == 0) //HERE IT CRASHES
            return true;

        return false;
    }

Et il tombe à la ligne:

if (cursor.getCount() == 0)

Ce que quelqu'un sait pourquoi? Je pense, je suis la vérification de toutes les exceptions possibles et les conditions...Pourquoi mon application crash ici?

PS: Toutes les méthodes de base de données sont synchronisées et je suis bien d'ouverture et de fermeture de la base de données/curseurs dans tous les cas, je l'ai vérifié de nombreuses fois.

Afficher plus de code et plein stacktrace. Vous obtenez ce excpetion -> vous avez une erreur quelque part
mise à jour de question.
Il n'est pas nécessaire de fermer la db. Android le gérer. Lisez cet Excellent explication ici...stackoverflow.com/questions/14002022/...
Je me demande si cela ne s'applique qu'aux Fournisseurs de Contenu
S'il vous plaît comment avez-vous réussi à résoudre cette erreur? veuillez me faire savoir si @GuriBhai solution owrked pour vous. Je vais avoir le même message d'erreur mais la fermeture de la db n'a pas résolu mon problème.

OriginalL'auteur qkx | 2014-04-30