Android 控制另一个应用程序服务
我有应用程序A和B。A包含一个Android 控制另一个应用程序服务,android,service,Android,Service,我有应用程序A和B。A包含一个服务,可以从B启动 我知道如何启动它,但如何从B向属于a的正在运行(后台)服务发送消息/意图 如何从B向属于a的正在运行的(后台)服务发送消息/意图 您可以使用相同的方法:调用startService()startService()仅在需要时才会启动服务,但它始终调用onStartCommand(),将提供的意图提供给您。这是双向的:A在B上启动服务,B在A上启动服务 备选办法包括: 将apendingent从a传递到B,并让B使用pendingent与a通信,对
服务
,可以从B启动
我知道如何启动它,但如何从B向属于a的正在运行(后台)服务发送消息/意图
如何从B向属于a的正在运行的(后台)服务发送消息/意图
您可以使用相同的方法:调用startService()
startService()
仅在需要时才会启动服务,但它始终调用onStartCommand()
,将提供的意图提供给您。这是双向的:A在B上启动服务,B在A上启动服务
备选办法包括:
- 将a
pendingent
从a传递到B,并让B使用pendingent
与a通信,对a的服务调用startService()
,或向a的服务设置的动态注册的广播接收器发送广播
- 将a
Messenger
从a传递到B,并让B使用Messenger
将消息
对象发送回a上的处理程序
(尽管这很可能需要a的服务中的HandlerThread
)
- 让B绑定到A的服务,其中A导出服务并提供AIDL定义的绑定
在这里查看关于pendingent
,您是否知道pendingent#send(int code)
中的code
是什么?我试图找出何时何地可以访问它,但失败了…@pskink:我从未使用过。如果我不得不猜测,它是传递给onActivityResult()
的结果代码,如果此PendingContent
是使用Activity
上的createPendingResult()
创建的。反过来,这是基于BroadcastReceiver
上的setResult()
。谢谢,我会检查它,但是我强烈感觉它应该在activity/receiver/service中统一访问…似乎它只对getBroadcast
有效,在BroadcastReceiver#onReceive
中,可以通过调用getResultCode()
来获取code
,对于活动/服务,我仍然没有绿色的想法:pendingContent#send
工作正常,但code
类似于Unobtainium
-)