gpt4 book ai didi

新版Dagger2中的android ObjectGraph

转载 作者:行者123 更新时间:2023-11-29 17:00:02 24 4
gpt4 key购买 nike

我正在尝试将下面的代码更新为 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());
}
}

现在我如何注入(inject)组件?

我的组件:

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

void inject(ActivityStartUpApplication activityStartUpApplication);

void inject(GetLatestRepositories getLatestRepositories);
}

最佳答案

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

参见 https://google.github.io/dagger/dagger-1-migration.html了解更多详情。

关于新版Dagger2中的android ObjectGraph,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43361622/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com