Android数据库帮助程序单例 – 在活动或所有片段中实例化?
作者:互联网
我有一个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();
解决方法:
既然您确定Singleton将在MainActivity中实例化,那么第一种方法应该没有任何问题,您甚至可以在片段中调用getInstance(null)
标签:android,android-activity,android-sqlite,android-fragments,android-database 来源: https://codeday.me/bug/20190623/1269573.html