Android 如何通过dagger将绑定服务注入到活动中?

Android 如何通过dagger将绑定服务注入到活动中?,android,dagger-2,Android,Dagger 2,我想通过Dagger2将绑定服务注入到我的活动中 我的服务声明如下: Public class MyService extends Service{ private final IBinder mBinder = new LocalBinder(); ... public class LocalBinder extends Binder { public MyService getService() { return MyService.this; } } @Ov

我想通过Dagger2将绑定服务注入到我的活动中

我的服务声明如下:

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() {
...
}

}
我的活动:

public abstract class MainActivity extends AppCompatActivity {

@Inject
MyService service;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
service.doBackgroundTask();
...
}
你将如何做到这一点?您将把
ServiceConnection
(放入模块内的基类)放在哪里


非常感谢。

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

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


关于ServiceConnection:您必须按照

中所述的常规方法进行操作。我处理的是相同的概念/问题,正如@Ognyan所说的,您无法控制创建服务

我想这可能对你有帮助

您可以在应用程序/活动中实例化服务,并按照所附链接中的描述与之通信

您还可以考虑将接口(与服务通信)放在片段/活动继承的基本抽象类(BaseActivity或BaseFragment)中,然后在您需要的任何片段或活动中轻松访问接口

希望它能解决你的问题