GreenDAO 学习笔记-小白教程(二)使用单例类来管理DaoSession

使用一个单例来管理DaoSession

编写一个单例类,可以全局保留唯一一个DaoSession对象。各Activity都可以调用这个对象,避免了创建多个对象的开销。在Application的onCreate()方法中进行初始化。

public class GreenDaoManager {
    private static final String TAG = "GreenDaoManager";

    private static final String DATABASE_NAME = "players.db";
    /**
     * 全局保持一个DaoSession
     */
    private DaoSession daoSession;

    private boolean isInited;

    private static final class GreenDaoManagerHolder {
        private static final GreenDaoManager sInstance = new GreenDaoManager();
    }

    public static GreenDaoManager getInstance() {
        return GreenDaoManagerHolder.sInstance;
    }

    private GreenDaoManager() {

    }

    /**
     * 初始化DaoSession
     *
     * @param context
     */
    public void init(Context context) {
        if (!isInited) {
            DaoMaster.OpenHelper openHelper = new DaoMaster.DevOpenHelper(
                    context.getApplicationContext(), DATABASE_NAME, null);
            DaoMaster daoMaster = new DaoMaster(openHelper.getWritableDatabase());
            daoSession = daoMaster.newSession();
            isInited = true;
        }
    }

    public DaoSession getDaoSession() {
        return daoSession;
    }
}

初始化:

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        init();
    }

    /**
     * 初始化
     */
    private void init() {
        GreenDaoManager.getInstance().init(getApplicationContext());
    }
}

在AndroidManifest.xml中该Application的名字:

    <application
        android:name=".MyApplication"
        // 其他代码...
    </application>

在Activity中使用单例类:

    /**
     * 获取一个全局的DaoSession实例
     */
    private void initDaoSession() {
        mDaoSession = GreenDaoManager.getInstance().getDaoSession();
    }

获取到DaoSession对象之后,可以对其进行增删改查等操作。

Demo源代码地址

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值