最后我从ORMLite的例子“NoBase”中获得了adatped方法。
创建模块,这给DatabaseHelper的单例:
@Module(library = true, complete = false)
public class DbModule {
@Provides
@Singleton
DatabaseHelper provideDatabaseHelper(Context context) {
return new DatabaseHelper(context);
}
// ...
}
其中:
public class DatabaseHelper extends SQLiteOpenHelper {
public DatabaseHelper(Context context, FileSystemService fileSystemService) {
super(context, "/Path/To/MyDbFile.db", null, DB_VERSION);
}
// ...
}
而且在你的业务模块使用DatabaseHelper做DB插入,查询等
@Module(library = true, complete = false)
public class BusinessModule {
@Provides
@Singleton
MyService provideMyService(DatabaseHelper databaseHelper) {
MyService s = new MyServiceImpl(databaseHelper);
return s;
}
...
}
注意:此解决方案尚未支持交易 - 这项壮举。还在等待实施。
Dagger1 or Dagger2? – EpicPandaForce
公平起见,我需要看到更多的代码来理解这里的体系结构,以及它需要注入什么以及什么时候被创建。 – EpicPandaForce