2012-07-12 85 views
5

這個標題聽起來有點瘋狂,但這是讓我困惑的東西。我的應用大量使用本地數據庫操作。正如Android文檔和一些博客中所建議的那樣,我擴展了SQLiteOpenHelper類,並在那裏定義了我所有的數據庫操作。由於我的一些數據庫操作在線程中執行,打開和關閉數據庫會導致一些IllegalStateExceptions。所以,我讓我的DB幫手爲Singleton,它解決了這些問題,也爲每個數據庫操作擺脫了openclose操作。現在,即使我從不關閉數據庫,一切似乎仍然正常。如果我不關閉Android中的數據庫會發生什麼?

  • 我的困惑是有必要關閉數據庫嗎?
  • 如果是這樣,那麼這樣做的適當位置是什麼,它在onDestroy的主要活動或其他地方?
  • 如果我不關閉DB,有什麼副作用?

回答

0

如果您嘗試再次打開相同的數據庫,則可以捕獲IllegalStateException

如果您在onCreate主要活動的方法中創建了DBHelper的實例 - 它將寫入關閉數據庫onDestroy。因此,您可以確定,下次在onCreate時,您的數據庫尚未打開。

如果您在服務中引用了DBHelper,那麼它應該在服務中打開和關閉,而不是在活動中打開和關閉。

您還可以使用Application類打開數據庫,但比它會打開每一次當你的應用程序啓動(例如,當您收到BroadcastReceiver

0

爲什麼你異常的原因是你想通過不同的線程從同一個數據庫寫入/讀取

我相信關閉數據庫的最佳位置在mainActivityonDestroy()之內。

0

我面臨同樣的問題。我打開數據庫,執行一些操作,我忘記關閉。其實我看到一些例外,我logcat是「泄漏發現」數據庫打開,從來沒有關閉。

相關問題