gpt4 book ai didi

android - Dagger - android.app.IntentService 与 @Inject

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:19:39 25 4
gpt4 key购买 nike

是否可以将通过 Dagger 暴露的对象注入(inject)到 android.app.IntentService 中?如果可以,我该怎么做?

我想要这样的东西。

public class SomeService extends android.app.IntentService {

@Inject
Synchronizer synchronizer;

public SomeService(String name) {
super(name);
}

@Override
protected void onHandleIntent(Intent intent) {
synchronizer.doSynch();
}

最佳答案

从 Dagger 的角度来看,IntentService 与任何其他类都没有什么不同。

但是 Dagger 2.x 提供了一种新方法,您可以将依赖项注入(inject) Android 的基础构建元素(如服务、 Activity 、 fragment 等)。这里是两个版本的示例调用。

Dagger 1.x

注入(inject)可能看起来像那样(我假设您的应用程序有一个 ObjectGraph 实例并公开了方法 inject)。当然,不要忘记将类添加到模块 定义中的注入(inject)类列表中。

  public class SomeService extends android.app.IntentService {

@Inject
Synchronizer synchronizer;

public SomeService(String name) {
super(name);
}

@Override
public void onCreate() {
super.onCreate();
((YourApplication) getApplication()).inject(this);
}

@Override
protected void onHandleIntent(Intent intent) {
synchronizer.doSynch();
}
}

Dagger 2.10+

Dagger 2.10 引入了 AndroidInjection,因此不需要进一步依赖具体的 Application 实例。

  public class SomeService extends android.app.IntentService {

@Inject
Synchronizer synchronizer;

public SomeService(String name) {
super(name);
}

@Override
public void onCreate() {
super.onCreate();
AndroidInjection.inject(this);
}

@Override
protected void onHandleIntent(Intent intent) {
synchronizer.doSynch();
}
}

关于android - Dagger - android.app.IntentService 与 @Inject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23268915/

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