【发布时间】:2016-04-04 09:26:31
【问题描述】:
我有一个 DBHelper 类设置为单例:
public class DBHelper extends SQLiteOpenHelper {
private static DBHelper sInstance;
public static synchronized DBHelper getInstance(Context context) {
if (sInstance == null) {
sInstance = new DBHelper(context.getApplicationContext());
}
return sInstance;
}
private DBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
databasePath = context.getDatabasePath(DATABASE_NAME).getPath();
}
}
我有一个MainActivity 和一些片段。其中许多片段需要访问我的 DBHelper 方法
我应该在每个需要访问数据库的片段中使用dbHelper = DBHelper.getInstance(getApplicationContext()) 吗?由于单例模式,实例化只会发生一次,所以我不需要担心使用该代码在每个片段中实例化的类
或者最好只在MainActivity 中实例化 DBHelper,然后在需要访问数据库的任何片段中获取对 mainactivity 的引用并从那里调用对象方法?每个片段中都有这样的内容:
mainActivity = (MainActivity) getActivity();
mainActivity.dbHelper.insertData();
【问题讨论】:
-
建议第一种方式。DB模块应该是独立的
-
顺便说一句,您可以在扩展应用程序的自定义应用程序中实例化
DBHelper。
标签: android android-fragments android-activity android-sqlite android-database