无需访问应用程序即可获得Dagger组件

时间:2016-07-13 18:11:42

标签: java android dagger-2 dagger

我想在像Adapter或自定义对象这样的类中使用注入,这些类无法访问扩展Application的MyApplication类。 如何访问组件?

使用下面的静态方法是否很好?

public class MyApplication extends Application {
    private static MyComponent component;

    @Override
    public void onCreate() {
        super.onCreate();

        component = DaggerMyComponent.builder()
                .appModule(new AppModule(this))
                .helperModule(new HelperModule())
                .build();
    }

    public static MyComponent getComponent(){return component;}


}

1 个答案:

答案 0 :(得分:2)

我认为在这种情况下使用静态对象会导致内存泄漏。 你可以遵循的是"注入一切"此great article中显示的模式。

它的本质是什么?尝试在已注入的对象中注入需要Component的对象。在本文中,AdapterViewHolder(任何对象)被注入到活动(以及适配器内的对象)中。这就是你想要实现的目标。

我还建议你阅读他关于Dagger 2的所有文章,因为我还没有看到关于Dagger 2功能的这么棒的高级教程