gpt4 book ai didi

android - 如何通过 Dagger 将绑定(bind)服务注入(inject) Activity ?

转载 作者:行者123 更新时间:2023-11-29 01:30:03 25 4
gpt4 key购买 nike

我想通过 Dagger2 将绑定(bind)服务注入(inject)到我的 Activity 中。

我的服务声明如下:

Public class MyService extends Service{
private final IBinder mBinder = new LocalBinder();
...
public class LocalBinder extends Binder {
public MyService getService() {
return MyService.this;
}
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return START_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
return mBinder;
}

public void doBackgroundTask() {
...
}

}

我的 Activity :

public abstract class MainActivity extends AppCompatActivity {

@Inject
MyService service;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
service.doBackgroundTask();
...
}

您将如何实现?您将把 ServiceConnection 放在哪里(在基类中,在模块中)?

非常感谢。

最佳答案

我认为以这种方式(通过注入(inject)字段)注入(inject)服务不会奏效,因为您无法控制服务对象的实例化。

如果您的服务包含需要注入(inject)的字段,您必须以注入(inject) Activity 的相同方式注入(inject) onCreate(),即调用 DaggerMyAppComponent.inject(this).

关于 ServiceConnection:您必须按照 http://developer.android.com/guide/components/bound-services.html 中描述的常规方式进行操作

关于android - 如何通过 Dagger 将绑定(bind)服务注入(inject) Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31700752/

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