2011-08-27 76 views
18

如果您完全不關閉連接,會發生什麼情況?我知道如果你沒有關閉它並嘗試打開另外一個,你會得到異常,但是如果你擁有一個全局單例,會發生什麼,而你根本就不關閉它?任何想法?永不關閉Android SQLite連接

回答

25

形成了時空連續的裂痕,在宇宙中威脅着生命的滅絕,直到有一天被一堆色澤鮮豔古怪的服裝(包括一些斗篷人類的保存,如果你能相信它)。

哦,不,等等。那只是一本漫畫書。


事實上,沒有什麼發生。 Google員工和其他Android專家告訴我,由於SQLite的工作方式(特別是處理事務),如果您未能關閉數據庫,應該會發生什麼壞事。

事實上,如果你實現一個內容提供者,你將會產生同樣的效果,因爲內容提供者沒有用任何種類的onDestroy()方法調用,這意味着你將永遠沒有機會關閉你的數據庫。一個內容提供者將會活着直到該過程終止。就我個人而言,這真的讓我感到困擾,這是我儘量減少使用內容提供商的原因之一。

+4

內容提供商是Android最不理解和使用最多的部分之一。他們被大量推送到文檔中,或者至少是早期的文檔,但只有在您計劃與第三方應用程序共享數據時才能使用它們。我看到有人用它們來序列化數據庫訪問,這很糟糕。無論如何,我認爲有一個靜態連接會很好。我做了很多工作來測試多連接會發生什麼。總結,它的不好:http://www.touchlab.co/blog/android-sqlite-locking/。研究ORMLite的連接管理。謝謝。 –

+0

這是一篇很棒的博文,順便說一句。 – CommonsWare

+0

該博客文章似乎不再存在。新鏈接? – John