2013-09-26 30 views
0

在我的數據庫輔助類中,我有db的打開和關閉方法。在哪裏打開和關閉數據庫。在助手類或活動內部?

public void open() throws SQLException 
{ 
    db = dbOpenHelper.getWritableDatabase(); 
} 

public void close() 
{ 
    dbOpenHelper.close(); 
} 

並以我DbHelper I類具有自定義方法來插入刪除等...

我的問題是,我應該在哪裏打開和關閉數據庫? 在幫助器的自定義方法內部,還是在onCreate()和onResume()內部的活動之前和之後運行每個方法之前,或者?

+0

什麼類有數據庫幫助器的實例c姑娘? (即它是您的活動的成員,還是...) –

+0

此數據庫獨佔此活動還是會被系統中的其他組件使用? –

+0

@DaleWilson它將被許多活動使用。 – tony9099

回答

1

最好的方法是將數據庫包裝在ContentProvider中。這樣做有很多優點,包括將數據庫與活動生命週期事件斷開連接,並確保所有活動都可以看到數據的通用最新版本(例如,如果您執行的操作是持有光標的活動如果其他活動改變了通過光標可訪問的數據,則會通知查詢結果。

但是,如果您認爲這種方法過於重量(方法有點複雜),您可以在onCreate中打開/關閉並onDestroy,但重新發布onResume中的任何查詢並提交onPause中的任何寫入。但是,Betware會在UI線程上運行,因此查詢尤其必須足夠簡單,以便在UI線程的時間限制內運行。

+0

好吧,ContentProvider似乎有點複雜,我寧願避免它。現在,我正在使用你建議的方法,在onCreate,onPause和使用線程中打開和關閉沉重的東西。謝謝 ! – tony9099

相關問題