【问题标题】:Injecting on adapters with dagger in android在android中用匕首注入适配器
【发布时间】:2014-08-04 04:08:57
【问题描述】:

我只是在尝试 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());
} ....

但是在创建此实例的 Activity 上,我必须获得一个允许注入的应用程序,而且每次使用该依赖项的类时,我都必须添加到模块中,roboguice 为我做了所有这些,并且只有一个条目指出修改内容的位置。

我做错了什么?有没有更好的方法来进行这种注射?避免在模块上声明每个类?

@Module(injects = {
    MainActivity.class,
    PeopleAdapter.class
    },
    library = true)
public class AndroidModule { ....

我将不胜感激任何对此的评论或最佳实践或经验。

谢谢!

【问题讨论】:

    标签: java android dependency-injection dagger


    【解决方案1】:

    你做的一切都是对的。 Dagger 需要比 Roboguice 更多的配置,但也更强大(可配置)。您是否已经尝试过范围图或惰性注入?

    每个使用注入的类都必须列在模块的injects 参数中。没有办法避免声明每个类。

    【讨论】:

    • 您能解释一下scoped graphslazy injection 之间的区别吗?你的意思是:scoped graphs:mObj = mActivityComponent.objectToInject();lazy injection:@Inject ObjectToInject mObj;
    猜你喜欢
    • 2017-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多