2013-07-01 49 views
0

我在寫應用程序,每個活動和服務都使用我的Sqlite數據庫。因爲它站立我實例化db(與db = new DBAdapter(this);)並且打開它在所有活動的onCreate方法並且關閉它在onStop方法。這是正確的方式去解決它,或者我應該以某種方式使數據庫全球?或者它應該以某種方式在活動之間傳遞?當在應用程序中的許多活動和/或片段中使用數據庫時,哪裏是打開和關閉數據庫的最佳位置?

我也想改變我的用戶界面使用片段,這將意味着更多的組件訪問相同的數據庫。當沒有碎片時,在每個活動中打開和關閉數據庫似乎相對可行,因爲通過它們的數據是線性的。但是對於片段(我剛剛開始瞭解),在同一個屏幕上可能會有很多片段,所以如果它們各自擁有自己的數據庫實例,我會擔心它們之間的衝突。所以我會很感激任何有關如何在這些情況下處理數據庫的建議。

非常感謝您的任何幫助。

回答

0

爲什麼不寫一個對所有處理所有數據庫傳輸的活動都是外部的類?這樣你可以查詢處理所有數據庫訪問的類。

你可以在你的應用程序和你的數據庫之間放置一個抽象層,這樣你所有的應用程序需要的就是一個帶有正確參數的函數調用(或調用)。

在你的應用程序中,如果你決定修改你只需更改一組代碼,那麼你的應用程序中的所有數據庫訪問都是這樣的,函數調用可能保持大致相同。就效率而言,只要你不從存儲數據中提取數據,它可能不會影響你打開數據庫的方式。

但是爲了這個原因,它可能是值得打開和關閉每個查詢,如果他們的電池在db打開的時候死了怎麼辦?

無論哪種方式,通過數據庫和應用程序之間的抽象級別,可以更改數據庫的訪問方式。

+0

明智的想法,謝謝:-)我不知道爲什麼我自己沒有想到它。第一個答案中提到的ActiveAndroid庫基本上出現在它的網站上 - 做同樣的事情,但同時將查詢封裝到類對象和屬性中。它看起來非常酷。但對於我而言,就目前而言,我很高興能夠創建自己的課堂 - 應該非常有趣......我喜歡在android中使用數據庫。 –

0

如果您有興趣使用框架而不是編碼數據庫訪問代碼,請查看Active Android(http://www.activeandroid.com/)。在我們的應用程序中,我們現在已經無需擔心何時打開和關閉數據庫,因爲此框架需要照顧到這一點。

它使用Application對象的onCreate和onTerminate來初始化和取消初始化框架,在此期間它執行與打開和關閉數據庫相關的操作。如果你出於某種原因不想使用框架,你可以從中得到提示並遵循類似的模型

+0

謝謝:-)看起來很棒。對於我來說,設置它看起來有點複雜 - 因爲我不熟悉在Eclipse中添加外部庫和插件等 - 但我肯定會從中獲得啓示,以創建我自己的類。但是我仍然會閱讀更多關於這個活動Android庫的內容,因爲它確實看起來很酷,而且肯定會在將來使用。乾杯:-) –

+0

是的。我們喜歡在我們的辦公室,並將所有我們手寫的數據庫訪問代碼移到這個框架中。 –

相關問題