Jak poznać wszystkie otwarte połączenia bazy danych za pomocą zielonego DAO ..?

Witam wszystkich, którzy są nowicjuszami w Androidzie i używają zielonego DAO do zarządzania bazą danych, ale często otrzymuję wyjątek bazy danych nie zamknięty, ponieważ robię to w Application onTeriminate (), utrzymując tylko pojedyncze połączenie bazy danych przez Aplikację, ale w niektórych przypadkach, gdy moja aplikacja przechodzi do tła i wznawia obiekt połączenia z bazą danych, staje się null, poradziłem sobie z problemem, sprawdzając null ness obiektu przed użyciem, ale teraz często otrzymuję wyjątek, który

android.database.sqlite.DatabaseObjectNotClosedException: aplikacja nie zamknęła kursora ani obiektu bazy danych, który został otwarty tutaj

proszę mi pomóc, jak sobie z tym poradzić

z góry dziękuję

Stack Trace: 01-03 09: 39: 18.688: E / SQLiteDatabase (3063): close () nigdy nie został jawnie wywołany w bazie danych „/data/data/com.opera.mini.android/databases/google_analytics.db” 01- 03 09: 39: 18.688: E / SQLiteDatabase (3063): android.database.sqlite.DatabaseObjectNotClosedException: Aplikacja nie zamknęła kursora ani obiektu bazy danych, który został otwarty tutaj 01-03 09: 39: 18.688: E / SQLiteDatabase (3063) : w android.database.sqlite.SQLiteDatabase. (SQLiteDatabase.java:1943) 01-03 09: 39: 18.688: E / SQLiteDatabase (3063): w android.database.sqlite.SQLiteDatabase.openDatabase (SQLiteDatabase.java:1007) 01-03 09: 39: 18.688: E / SQLiteDatabase (3063): w android.database.sqlite.SQLiteDatabase.openDatabase (SQLiteDatabase.java:986) 01-03 09: 39: 18.688: E / SQLiteDatabase (3063): at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase (SQLiteDatabase.java:1051) 01-03 09: 39: 18.688: E / SQLiteDatabase (3063): w android.app.ContextImpl.openOrCreateDatabase (ContextImpl.java:787) 01-03 09: 39: 18.688: E / SQLiteDatabase (306 3): w android.content.ContextWrapper.openOrCreateDatabase (ContextWrapper.java:221) 01-03 09: 39: 18.688: E / SQLiteDatabase (3063): w android.content.ContextWrapper.openOrCreateDatabase (ContextWrapper.java:221) 01 -03 09: 39: 18.688: E / SQLiteDatabase (3063): w android.database.sqlite.SQLiteOpenHelper.getWritableDatabase (SQLiteOpenHelper.java:157) 01-03 09: 39: 18.688: E / SQLiteDatabase (3063): at com .google.android.apps.analytics.PersistentHitStore.loadExistingSession (Nieznane źródło) 01-03 09: 39: 18.688: E / SQLiteDatabase (3063): na com.google.android.apps.analytics.PersistentHitStore. (Nieznane źródło) 01 -03 09: 39: 18.688: E / SQLiteDatabase (3063): w com.google.android.apps.analytics.PersistentHitStore. (Nieznane źródło) 01-03 09: 39: 18.688: E / SQLiteDatabase (3063): at com .google.android.apps.analytics.AnalyticsReceiver.onReceive (Nieznane źródło) 01-03 09: 39: 18.688: E / SQLiteDatabase (3063): na com.opera.mini.android.OpMiniInstallReferrerReceiver.onReceive (Źródło: 15) 01 -03 09: 39: 18.688: E / SQLiteDatabase (3063 ): w android.app.ActivityThread.handleReceiver (ActivityThread.java:2119) 01-03 09: 39: 18.688: E / SQLiteDatabase (3063): w android.app.ActivityThread.access 1500 USD (ActivityThread.java:123) 01 -03 09: 39: 18.688: E / SQLiteDatabase (3063): w android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1197) 01-03 09: 39: 18.688: E / SQLiteDatabase (3063): w android .os.Handler.dispatchMessage (Handler.java:99) 01-03 09: 39: 18.688: E / SQLiteDatabase (3063): na android.os.Looper.loop (Looper.java:137) 01-03 09:39 : 18.688: E / SQLiteDatabase (3063): w android.app.ActivityThread.main (ActivityThread.java:4424) 01-03 09: 39: 18.688: E / SQLiteDatabase (3063): w java.lang.reflect.Method. invokeNative (Native Method) 01-03 09: 39: 18.688: E / SQLiteDatabase (3063): w java.lang.reflect.Method.invoke (Method.java:511) 01-03 09: 39: 18.688: E / SQLiteDatabase (3063): w com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:784) 01-03 09: 39: 18.688: E / SQLiteDatabase (3063): w com.android.internal.os. ZygoteInit.mai n (ZygoteInit.java:551) 01-03 09: 39: 18.688: E / SQLiteDatabase (3063): w dalvik.system.NativeStart.main (Metoda natywna) 01-03 09: 39: 18.688: E / System (3063 ): Nieprzechwycony wyjątek zgłoszony przez finalizer 01-03 09: 39: 18.688: E / System (3063): java.lang.IllegalStateException: Nie ma blokady bazy danych! 01-03 09: 39: 18.688: E / System (3063): w android.database.sqlite.SQLiteDatabase.verifyLockOwner (SQLiteDatabase.java:2090) 01-03 09: 39: 18.688: E / System (3063): w android.database.sqlite.SQLiteDatabase $ 1.entryRemoved (SQLiteDatabase.java:2182) 01-03 09: 39: 18.688: E / System (3063): w android.database.sqlite.SQLiteDatabase $ 1.entryRemoved (SQLiteDatabase.java:2178 ) 01-03 09: 39: 18.688: E / System (3063): w android.util.LruCache.trimToSize (LruCache.java:197) 01-03 09: 39: 18.688: E / System (3063): na Androida .util.LruCache.evictAll (LruCache.java:285) 01-03 09: 39: 18.688: E / System (3063): w android.database.sqlite.SQLiteDatabase.deallocCachedSqlStatements (SQLiteDatabase.java:2143) 01-03 09 : 39: 18.688: E / System (3063): w android.database.sqlite.SQLiteDatabase.closeClosable (SQLiteDatabase.java:1126) 01-03 09: 39: 18.688: E / System (3063): w android.database. sqlite.SQLiteDatabase.finalize (SQLiteDatabase.java:1914) 01-03 09: 39: 18.688: E / System (3063): w java.lang.Daemons $ FinalizerDaemon.doFinalize (Daemons.java:182 ) 01-03 09: 39: 18.688: E / System (3063): w java.lang.Daemons $ FinalizerDaemon.run (Daemons.java:168) 01-03 09: 39: 18.688: E / System (3063): at java.lang.Thread.run (Thread.java:856)

Kod zamknięcia połączenia:

@Override
public void onTerminate() {
    // TODO Auto-generated method stub
    super.onTerminate();
    snail_mail_db.close();
      snail_mail_database_helper_obj.close();

}

questionAnswers(2)

yourAnswerToTheQuestion