android ObjectGraph在新版本的Dagger2中

时间:2017-04-12 06:12:26

标签: android dagger-2

我试图将以下代码更新为dagger2,但我收到了ObjectGraph的错误:

import dagger.ObjectGraph;
public class App extends Application {
    private static App instance;
    private ObjectGraph objectGraph;
    public App() {
        instance = this;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        objectGraph = ObjectGraph.create(new AppModule());
    }

    public static void injectMembers(Object object) {
        getInstance().objectGraph.inject(object);
    }

    public static <T>T get(Class<T> klass) {
        return getInstance().objectGraph.get(klass);
    }

    public static App getInstance() {
        return instance;
    }
}

如何更新,以及必须使用哪个类而不是ObjectGraph

本课程中使用的

injectMembers

public class MyJobManager extends JobManager {
    public MyJobManager(Context context) {
        super(context, new Configuration.Builder(context)
                .injector(new DependencyInjector() {
                    @Override
                    public void inject(BaseJob baseJob) {
                        App.injectMembers(baseJob);
                    }
                })
 .build());
    }
}

现在我如何注入组件?

我的组件:

@ActivitiesScope
@Component(dependencies = GithubApplicationComponent.class)
public interface ApplicationComponent {
    void inject(ActivityRegister activityRegister);

    void inject(ActivityStartUpApplication activityStartUpApplication);

    void inject(GetLatestRepositories getLatestRepositories);
}

1 个答案:

答案 0 :(得分:3)

Dagger 2不使用ObjectGraph。它不使用任何东西作为替代品。 Dagger1在运行时通过反射进行注入,并使用ObjectGraph来提供该功能。 Dagger 2在编译时进行注入,因此它不需要运行时对象来表示图形。相反,您需要构建一个链接您要提供的模块的组件。然后,您可以使用该组件进行注入。

有关详细信息,请参阅https://google.github.io/dagger/dagger-1-migration.html