我有我如何處理我的數據庫在我的應用程序有點顧慮的使用,這裏基本上是我做的:SQLiteOpenHelper變量初始化/整個應用程序
我有一個自定義類擴展SQLiteOpenHelper
處理所有的交易與DB。
在我的應用程序中,我有一個單獨的Activity
和幾個Fragments
在創建,刪除,隱藏或顯示過程中顯示。
在每Fragment
,我需要修改或從數據庫中存取數據,我宣佈一個靜態變量:
private static DatabaseHandler mDB;
我初始化它的onCreate()
方法是這樣的:
mDB = DatabaseHandler.getInstance(getActivity());
所有這些工作,我關心的是變量本身,在我所有的自定義片段類中聲明它是一個靜態變量是一個好主意嗎?
我也使用相同的方式包含使用mParams = Parameters.getInstance(getActivity());
應用程序的主要參數的類,我是否也應該聲明它爲靜態?
我想避免內存泄漏和NPE,但我不知道什麼是正確的方式來處理。
僅供參考,我DatabaseHandler
類的開頭:
public class DatabaseHandler extends SQLiteOpenHelper {
private static DatabaseHandler sInstance = null;
(...)
private Resources mResources;
public static DatabaseHandler getInstance(Context context) {
if (sInstance == null) {
sInstance = new DatabaseHandler(context);
}
return sInstance;
}
private DatabaseHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
mResources = context.getResources();
}
(...)
謝謝
我讀了一些答覆說,這是更好地避免延長'應用'類,並且Android文檔還指出:'通常不需要子類Application。在大多數情況下,靜態單例可以以更模塊化的方式提供相同的功能。(來源:[link](http://developer.android.com/reference/android/app/Application.html)) –
我不' t認爲擴展'Application'會產生任何問題,因爲例如在應用程序啓動時加載數據庫在Application類中執行而不是在Activity中執行。 – Libin