概述:在onStart和異步任務中打開數據庫連接變得相當複雜。擁有全局可用的數據庫連接是不好的做法嗎?如果不好,什麼是更好的方法?Android何時應該打開和關閉數據庫連接?
詳細信息:我有一個應用程序連接到sqlite3數據庫的幾個活動。起初,我不需要訪問數據庫的地方很多,所以每次需要訪問時我都會打開和關閉。然後有更多需要訪問它的地方,正如另一個Stack Overflow問題所建議的那樣,我開始在需要連接的onStart方法中打開數據庫連接,並在onStop方法中關閉它。
這工作得很好,直到我開始需要某些超出活動時間的異步任務連接。由於該活動的onStop方法已被調用並且連接已關閉,所以在異步任務嘗試訪問數據庫時失敗。作爲解決方案,我爲在onPreExecute方法中打開並在onPostExecute方法中關閉的每個異步任務創建了單獨的連接。
這導致了很多連接的打開和關閉,我想知道是否在應用程序上下文中創建全局可用的數據庫連接是個好主意。如果我忘記關閉連接或應用程序關閉,它肯定會清理很多代碼並刪除發生的任何未關閉的db異常。任何其他人試過這個/看到這種方法的任何問題?
這是很好的做法,做到這一點。要避免的主要問題是使用應用程序上下文的內存泄漏,如果僅用於數據庫操作,這應該不是問題。 – stealthcopter 2012-04-12 19:46:28