2011-06-22 103 views
3

我的應用程序有一些活動和一個服務,可以從同一個SQLite數據庫讀取和寫入。爲了保持它們同步,我使用SQLiteDatabase對象的單例實例。安全關閉數據庫

但是,每過一段時間,我都會通過Android Market控制檯從客戶那裏獲得堆棧跟蹤,並且它顯示某些內容試圖訪問已經關閉的數據庫。

當前,我的活動始終打開並關閉onCreate和onPause(如果isFinishing)數據庫。當一個活動打開數據庫時,它還會切換一個靜態布爾值以防止我的服務關閉它。我的服務(基於AlarmManager定期運行)始終打開,一旦它讀取了需要的信息,就會立即關閉它。但是,如果該活動的靜態布爾值處於打開狀態,該服務將不會關閉數據庫。

我不知道我的洞在哪裏,我是否真的需要一直關閉數據庫,如果我有服務定期使用它。

回答

0

您應該在onDestroy方法中關閉數據庫以避免該問題。

確實,有時onDestroy沒有被調用,但它並不重要。如果操作系統取消你的進程,所有的資源都將被清理乾淨。