android代码打开数据库,Android打开和关闭数据库
與計算機編程中的許多事情一樣,關閉SQLite數據庫的時間沒有單一的“正確進行”(如果您正在使用它,則通過SQLiteOpenHelper上的close(),否則對SQLiteDatabase執行close()).
一個相當硬的規則是不要同時跨多個線程為同一個數據庫使用多個SQLiteDatabase對象.這可能會讓你遇到麻煩,除非你正在進行自己的線程同步.如果您堅持每個數據庫使用一個SQLiteDatabase對象,則在SQLiteDatabase中處理線程同步.
由于one-database-for-all-threads規則,并且因為在許多不同的組件中跟蹤何時線程可能或可能不想要數據庫可能會很棘手,一些開發人員采用單一數據庫管理器的方法,懶惰打開數據庫……永遠不會關閉它.例如,數據庫支持的ContentProvider使用此模式,因為ContentProvider永遠不會被銷毀,因此沒有明確的時間關閉數據庫.
就個人而言,我會通過開放式使用 – 關閉方法走這條路線,特別是如果你使用SQLCipher for Android(加密的SQLite替代品).但是,如果您確定一次只有一個線程可以使用數據庫,那么open-use-close方法沒有什么特別的錯誤.
如果只有一個組件使用數據庫,則觸發在onCreate()中打開數據庫并在onDestroy()中關閉它沒有任何問題.畢竟,如果這是唯一需要數據庫的組件,那么當組件本身消失時,您不需要數據庫.
Close your db in onDestroy() Comments: “OnDestroy() does not get called always! Use onStop()!” –> So onStart() has to open it.
如果未在組件上調用onDestroy(),則表明您在該組件中遇到未處理的異常,或者您的進程已終止.后一種情況不是問題(同樣,這是ContentProvider的工作方式,因為提供程序永遠不會被銷毀).前一種情況應該不是問題,只要您不會在多個線程中意外地同時使用舊的SQLiteDatabase和一些較新的SQLiteDatabase.
The db works efficiently. No need to close it.
這不是效率問題. SQLite是事務性的.無法關閉數據庫不是問題,因為沒有未刷新的緩沖區或您必須擔心的事情.
Open your db once and create a field and an accessor.
這與關閉數據庫時沒有任何關系.
Close after use.
這是一種模式,并且正確完成它可以工作.
總結
以上是生活随笔為你收集整理的android代码打开数据库,Android打开和关闭数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 鸿蒙系统能否推广,鸿蒙系统凭实力占市场,
- 下一篇: android app 移植到pc,微软