适用于Android的ORMLite:使用Roboguice绑定DAO

Sam*_*am7 8 android ormlite roboguice

我只是想用ORMLite设置我的Android项目.我正在使用Roboguice进行DI.现在我的问题是,这里是否有人可以帮助那些合作.

我已经设置了我的助手类扩展OrmLiteSqliteOpenHelper.现在我想知道如何注入正确的DAO类.

一般的最佳实践将是太棒了.因为使用OrmLiteBaseActivity不应该真正适用,因为这应该由Roboguice处理.问题是:如何?

我非常感谢任何帮助,经验,最佳实践等.

emm*_*mby 12

如果您从OrmLiteBaseActivity扩展,则无法从RoboActivity扩展.这没关系,只需调用以下内容(假设roboguice 1.1)对您的非机器人活动进行注射:

((InjectorProvider)getApplicationContext()).getInjector().injectMembers(this)
Run Code Online (Sandbox Code Playgroud)

完成后,您可以执行dao对象的注入.

为了注入您的DAO,我建议您遵循SystemServiceProvider(绑定)建立的模式.因此,实现如下的DaoProvider:

class DaoProvider<T> implements Provider<T> {
    protected ConnectionSource conn;
    protected Class<T> clazz;

    public DaoProvider( ConnectionSource conn, Class<T> clazz ) {
        this.conn = conn;
        this.clazz = clazz;
    }

    @Override
    public T get() {
        return DaoManager.createDao( conn, clazz  );
    }
}
Run Code Online (Sandbox Code Playgroud)

提供绑定.您需要为要注入的每种DAO类型执行一次:

bind(MyDaoObjectType.class).toProvider(
      new DaoProvider<MyDaoObjectType>(conn,MyDaoObjectType.class));
Run Code Online (Sandbox Code Playgroud)

然后您可以将其注入您的活动或其他任何地方:

@Inject MyDaoObjectType myDaoObjectType;
Run Code Online (Sandbox Code Playgroud)