我读了一些类似的问题(例如在这个链接上),但我问的问题有点不同。实际上,在我的情况下,该服务是由该startService
方法手动启动的,因此无法使用该bindService
方法启动它。
- 假设我们有一个包含
MainService
服务和MainServiceActivity
活动的包。在文件“AndroidManifest.xml”中,这个活动被声明为 actionMAIN
和 categoryLAUNCHER
。该活动用于通过 配置服务SharedPreferences
并通过调用startService
方法启动服务。换句话说,通常用户启动MainServiceActivity
并配置/启动MainService
. - 现在考虑另一个活动(我们称之为
SecondActivity
),它是另一个包的一部分。根据配置,服务使用startActivity
方法启动此活动,因此此其他活动在与MainService
. 一旦活动运行,它应该通知服务。 - 此时,在
MainService
和之间开始通信请求/回复SecondActivity
:服务发送请求,活动发送回复。
通过消息传递的通信可能适合,但它MainService
是通过startService
方法启动的,因此bindService
想要绑定到服务的活动不能调用该方法。
然后我有了一个使用附加服务的想法(我们称之为它UtilityService
),它是同一个包的一部分MainService
:UtilityService
可以使用该bindService
方法启动。作为结果:
- 一旦
MainService
运行,它可能会执行绑定到UtilityService
; - 当
MainService
启动一个外部活动(例如上面的SecondActivity
)时,这个活动绑定到UtilityService
.
通过这种方式,theMainService
和 theSecondActivity
都连接到了UtilityService
,后者充当了通信的中介。
这个想法有替代方案吗?