我打算在我的项目中使用GreenDAO
。我已经通过创建测试项目来测试它。但是,我有几个要求,我需要完成。
我的应用程序的数据库将被加密。为此,我们计划使用SQLCipher。我找到了link。我正在研究它,但有兴趣知道原始GreenDAO项目中有什么可用。
由于我的应用程序会将数据同步到服务器或从服务器同步数据,因此我将使用SyncAdapter,因为我不想自己完成所有已经由Android框架完成的重量级操作。但它需要Content Provider
才能使用。那么,我如何将GreenDAO与Content Provider
一起使用。
更新2
我的项目有七个实体。我在实体上使用了addContentProvider()
。并生成七个不同的内容提供商。有没有办法在单个内容提供商中拥有所有sqlite表?
答案 0 :(得分:9)
我有一个使用greenDao和内容提供商运行的项目。首先我使用ProviGen生成内容提供程序并使用内容解析器进行查询,但随后项目变得非常大,所以我决定实现greenDAO,我所做的就是使用在provigen中创建的contentProvider来获取从它的数据库,所以现在我有contentProvider和provigen附加到同一个数据库。我鼓励您创建ContentProvider并将daoMaster附加到使用它生成的数据库。这是我在onCreate应用程序类中使用的代码片段:
private static DaoSession daoSession;
public void onCreate(){
SQLiteOpenHelper myAppOpenHelper = new ProvigenContentProvider().openHelper(this); //ContentProvider created previously
SQLiteDatabase db = myAppOpenHelper.getWritableDatabase();
DaoMaster daoMaster = new DaoMaster(db);
daoSession = daoMaster.newSession();
}
之后才使用greendao:
public DaoSession getDaoSession(){
return daoSession;
}
在那里你可以同时拥有contentProvider和greenDao。如果尚未启动项目,请手动创建内容提供程序,并在此处创建具有相同代码的DaoMaster。祝你好运