我將在前面提到這個問題,注意我已經看過this similar question,但是我仍然遇到問題。基本上,我想在我的Android應用程序的兩個活動中訪問同一個數據庫。然而,當我在第二個活動打開它,我得到兩個系列的消息在我的logcat:在沒有內存泄漏的情況下在Android中的連續活動中使用相同的數據庫
第一:
狗「的終結拋出未捕獲的異常(將被丟棄):
Ljava /郎/ IllegalStateException異常;:結束寫入光標[email protected]上還沒有被去激活或在android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)關閉
」
(狗是在我的數據庫表的名稱,dog_data)
二:
「ERROR /數據庫(1316):泄漏發現
ERROR /數據庫(1316):java.lang.IllegalStateException:/數據/數據/ COM ... /數據庫/ dog_data SQLiteDatabase創建和從未關閉」
至於我可以告訴大家,我上午在退出的第一個活動結束我的數據庫。遵循記事本教程的風格,我在SQLiteDatabase和第一個活動的onPause()方法中有一個包裝類「DbAdapter」,我調用該Adapter上的close方法(它調用SQLiteDatabase上的close方法,以及我的SQLiteOpenHelper)。
我認爲這個問題是我如何我試圖重新打開數據庫在我的第二個活動:
SQLiteDatabase db = openOrCreateDatabase("dog_data",
SQLiteDatabase.CREATE_IF_NECESSARY, null);
(我選擇不使用包裝,因爲我只需要在數據庫上運行一個查詢,也許這是一個問題)。
有人可以提出我的問題可能在哪裏?我承認(從我的問題中可以清楚)我沒有完全理解「關閉」數據庫的含義(SQLiteDatabase.close()的文檔並不特別具體),這可能是主要原因我的問題。
謝謝。
事實上,事實證明,我在打開和關閉數據庫時有點過於熱情。通過從onResume()和DbAdapter.open()從onResume()中刪除DbAdapter.close(),我能夠停止內存泄漏。 我仍然得到第一個「終結光標」問題,雖然它在LogCat中是綠色字體,似乎表明它不是一個大錯誤。如果可能的話,我仍然想解決它。預先感謝您的幫助。 – 2011-05-27 17:00:47