如何在项目库中获取 DaoSession?
how do I get the DaoSession in a project library?
你好,抱歉我的英语不好我正在使用 google 翻译,我是 greendao 的新手,我已经阅读了很多内部教程,并且都展示了如何 运行 它在 activity 中,也就是获取 DaoSession:
DaoSession daoSession = ((App) getApplication()).getDaoSession();
我的问题是,如何获取项目库中的DaoSession?因为我不能调用 getApplication()
感谢您的帮助
我的解决方案虽然不是非常优化,但并不依赖于应用程序,因为 android 应用程序只能在主应用程序的清单中声明一个应用程序 class图书馆 运行。所以我决定用单例模式创建一个 class 并在必要时从那里调用 DaoSession。我留下代码,以防它为他们服务,或者如果他们可以改进它。
这是class
public class DaoHelper {
private static volatile DaoHelper daoInstance;
private DaoSession daoSession;
private DaoHelper(Context context){
//Prevent form the reflection api
if(daoInstance!=null){
throw new RuntimeException("Use getInstance() method to get the single instance of this class.");
}else{
CustomDaoMaster.OpenHelper helper = new CustomDaoMaster.OpenHelper(context,
"db",null);
SQLiteDatabase db = helper.getWritableDatabase();
CustomDaoMaster daoMaster = new CustomDaoMaster(db);
daoSession = daoMaster.newSession();
}
}
public static DaoHelper getInstance(Context context){
//Double check locking pattern
if(daoInstance==null){
synchronized (DaoHelper.class){//Check for the second time.
//if there is no instance available... create new one
if(daoInstance==null)daoInstance = new DaoHelper(context);
}
}
return daoInstance;
}
public DaoSession getDaoSession(){
return daoSession;
}
}
这是一种使用方式
DaoSession daoSession = DaoHelper.getInstance(context).getDaoSession();
你好,抱歉我的英语不好我正在使用 google 翻译,我是 greendao 的新手,我已经阅读了很多内部教程,并且都展示了如何 运行 它在 activity 中,也就是获取 DaoSession:
DaoSession daoSession = ((App) getApplication()).getDaoSession();
我的问题是,如何获取项目库中的DaoSession?因为我不能调用 getApplication()
感谢您的帮助
我的解决方案虽然不是非常优化,但并不依赖于应用程序,因为 android 应用程序只能在主应用程序的清单中声明一个应用程序 class图书馆 运行。所以我决定用单例模式创建一个 class 并在必要时从那里调用 DaoSession。我留下代码,以防它为他们服务,或者如果他们可以改进它。
这是class
public class DaoHelper {
private static volatile DaoHelper daoInstance;
private DaoSession daoSession;
private DaoHelper(Context context){
//Prevent form the reflection api
if(daoInstance!=null){
throw new RuntimeException("Use getInstance() method to get the single instance of this class.");
}else{
CustomDaoMaster.OpenHelper helper = new CustomDaoMaster.OpenHelper(context,
"db",null);
SQLiteDatabase db = helper.getWritableDatabase();
CustomDaoMaster daoMaster = new CustomDaoMaster(db);
daoSession = daoMaster.newSession();
}
}
public static DaoHelper getInstance(Context context){
//Double check locking pattern
if(daoInstance==null){
synchronized (DaoHelper.class){//Check for the second time.
//if there is no instance available... create new one
if(daoInstance==null)daoInstance = new DaoHelper(context);
}
}
return daoInstance;
}
public DaoSession getDaoSession(){
return daoSession;
}
}
这是一种使用方式
DaoSession daoSession = DaoHelper.getInstance(context).getDaoSession();