2011-04-21 98 views
3

我的Android應用程序經常記錄錯誤,抱怨說我未能發佈我的語句,遊標和數據庫。實際上,我在使用它們的代碼的最後{}塊中明確地釋放了所有遊標,並且在包含它們的類的finalize()方法中關閉了我的數據庫。Android:我真的需要擔心關閉SQLite數據庫實例嗎?

我的應用程序的結構使我很難在數據庫對象(除了終結器)上顯式調用close()方法,因爲例如,使用數據庫的類不是Activity類但可能是一個由Activity間接使用的類。所以這個類本身並不知道它最終所附的活動何時被銷燬。

我需要關注這個嗎?我是否通過不明確地關閉數據庫實例來泄漏某些資源?有沒有什麼危險會導致某些東西無法寫入文件? Android上的SQLite實現是否寫入緩存?我可以關閉它或強制同步嗎?

什麼是Android VM的終結者策略 - 它們是否能夠最終運行?

弗蘭克

回答

1

我發現在我的應用程序一個強制關閉的問題,這是一個未關閉連接的結果。在我的情況下,查詢花了很長時間,用戶可以返回到一個活動並重新點擊強制一個新的查詢。

我僅在調試應用程序時發現此問題,因爲它最終出現了一些代碼,我認爲該代碼在該執行點不可行。

簡單地關閉我的連接解決了這個問題。所以,漫長的故事漫長不能傷害整潔。猜測你知道,無論如何,你只是在尋找驗證?

+1

是的,我通常會清理東西,但在這種情況下,我將數據庫功能添加到已存在的東西。對於在非gc環境中保證的析構函數調用,有些話要說。清理的好地方。 – 2011-04-21 20:26:35