数据库
首页 > 数据库> > Android数据库帮助程序单例 – 在活动或所有片段中实例化?

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