這個想法是在整個應用程序中只使用一個連接,因爲幾乎每次都會使用它。 是否有可能獲得SQLiteDatabase並將其變爲一個全局變量以在整個應用程序中使用?是否有可能將SQLiteDatabase變成全局變量?
我應該遵循哪種方式來做到這一點?
Thx提前。
這個想法是在整個應用程序中只使用一個連接,因爲幾乎每次都會使用它。 是否有可能獲得SQLiteDatabase並將其變爲一個全局變量以在整個應用程序中使用?是否有可能將SQLiteDatabase變成全局變量?
我應該遵循哪種方式來做到這一點?
Thx提前。
這兩個當前的答案說同樣的事情,他們是100%正確的,但也許不能解釋整個事情。 在android框架中,應用程序類是您可以放置全局可訪問的任何變量和數據的位置。 http://developer.android.com/reference/android/app/Application.html
通過任何可以調用getApplication()的活動,它將返回您創建的應用程序實例。
因此,您可以通過在應用程序中添加公共方法來使數據庫可用。
在你這樣做到底:
SQLiteDatabase myDatabase = getApplication().getDatabase();
然後在您的應用程序類,你會填寫getDatabase()方法。
稍微好一些的方法可能是創建一個管理數據庫的類,並使該類成爲應用程序的成員。這可以讓你在一個類中封裝所有開放的cloase和業務數據庫。然後,您可以使用應用程序類的方法從查詢等回傳遊標。
像做一個dbHelper並將其引用到應用程序中? – JLFerrari
對 - 這就是主意。 O'Reilly編寫的「學習Android」一書構建了一個涵蓋這種特定方法的示例應用程序。 以下是該書源代碼的鏈接: http://examples.oreilly.com/0636920010883/ 查看YambaApplication類和StatusData類。 或者當然也可以拿到這本書.http://oreilly.com/catalog/0636920010883 –
您可以將數據庫的連接和訪問權限放入應用程序類中。這將允許您創建一個數據庫連接單例,這個單例在整個程序中都可用。
有兩種方法可以做到這一點,創建一個自定義Application類或使用Singleton。
...和ContentProvider。這種方式是Android風格的解決方案。 – FeelGood
多線程應用程序? –