2012-07-04 21 views
2

可能重複:
Create SQLite DB in Android library在運行時創建的SQLite數據庫不利用上下文

我想提出一個Java庫,我需要一個SQLite數據庫中在運行時打開或創建的我庫存儲數據等...

所有Android的SQLite API我見過需要一個上下文,從一個活動創建一個數據庫,因爲我正在做一個庫,沒有活動e tc ...我如何獲得SQLite數據庫?

問題是我的庫只有一個公共類,而在我的內部庫中,我需要創建一個SQLite數據庫供私人使用。 所以我不能要求用戶發送上下文。或者我可以嗎?

看看Google是如何在他們的圖書館裏做的? 在我使用Android分析庫的時候,我不會傳遞任何其他分析應用程序ID。並在他們的文檔,你可以讀到:「網頁瀏覽,事件和電子商務匹配存儲在SQLite數據庫,並分發給谷歌Analytics(分析)服務器定期

回答

3

我怎樣才能得到一個SQLite數據庫

讓你的庫爲您提供了Context的消費者。

所以我不能只是要求用戶在上下文中發送,或者可以嗎?

是的,你可以。如果您注意到,android.*程序包中的許多類都有將Context作爲參數的方法。您也可以採用將Context作爲參數的方法。

現在,您需要記錄您想要使用的Context以及將觸摸它的對象的使用壽命,因此您的圖書館的消費者可以傳入適當的信息。例如,如果您的圖書館將創建一個保存在SQLiteOpenHelper上的靜態數據成員,則您希望實際上讓圖書館的使用者爲您提供Application而不是ActivityService或其他Context,因此您不需要遇到垃圾收集問題。

+0

好的,這聽起來不錯,謝謝你,但在這種情況下,谷歌如何在他們的圖書館做到這一點?在我使用Android分析庫時,我不會傳遞其他任何內容,然後通過分析的應用ID。在他們的文檔中,您可以閱讀:「瀏覽量,事件和電子商務匹配存儲在_SQLite_數據庫中,並定期發送到Google Analytics服務器」 –

+2

您必須*必須通過上下文。 'startNewSession'方法接受兩個參數:您的網絡媒體資源ID和您的活動上下文:https://developers.google.com/analytics/devguides/collection/android/devguide#samples – twaddington

+0

哦,錯過了!完美的,我會得到這個並將其轉發到我的數據庫單例類爲SQLite交易。但是,我需要導入到我的庫中才能使用它?上下文沒有定義。 +1 upvote並被接受 –