我只是在尝试dagger而不是roboguice,到目前为止butterknife非常棒且简单,为它点一下:)
但是另一方面,我发现dagger比roboguice更不容易配置,如果值得改变,我必须基准测试,但在这种情况下,我正在寻找如何注入东西,比如适配器,这是我做的,它工作:
public class PeopleAdapter extends BaseAdapter {
private static final String TAG = PeopleAdapter.class.getName();
@Inject
TempoSharedPreferences prefs;
private LinkedList<People> elements;
public PeopleAdapter (LinkedList<People> elements, TempoApplication app) {
this.elements = elements;
app.inject(this);
Log.d(TAG, "registered: " + prefs.isRegistered());
} ....
但是在创建这个实例的活动上,我必须得到一个允许注入的应用程序,我还必须在每次使用该依赖的类中添加模块,roboguice为我做了所有这些,只有一个入口点可以修改这些东西。
我做错了什么吗?有更好的注射方法吗?避免在模块上声明每个类?
@Module(injects = {
MainActivity.class,
PeopleAdapter.class
},
library = true)
public class AndroidModule { ....
我将感谢任何关于这方面的评论或最佳实践或经验。
谢谢!
你做的一切都是对的。Dagger比Roboguice需要更多的配置,但也更强大(可配置)。您已经尝试过作用域图或惰性注入了吗?
每个使用注入的类必须在模块的injects
参数中列出。没有办法避免每个类的声明