Android 如何通过dagger将绑定服务注入到活动中?
我想通过Dagger2将绑定服务注入到我的活动中 我的服务声明如下: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
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)中,然后在您需要的任何片段或活动中轻松访问接口 希望它能解决你的问题