Android 导出服务与ADIL服务

Android 导出服务与ADIL服务,android,service,Android,Service,除了将服务标记为导出以供远程进程使用外,我找不到关于何时创建ADIL接口的直接答案 到目前为止,我发现ADIL允许并发执行多个事件?当您希望允许其他应用程序或进程绑定到导出的服务(例如,bindService())时,可以使用AIDL 相反,如果您只希望其他应用程序或流程通过startService()启动您的服务,那么您不需要AIDL。我明白了,因此标记为exported的服务可以启动,但不能通过binder对象跨流程边界操作?@justanother:正确bindService()可以在没有

除了将服务标记为导出以供远程进程使用外,我找不到关于何时创建ADIL接口的直接答案


到目前为止,我发现ADIL允许并发执行多个事件?

当您希望允许其他应用程序或进程绑定到导出的服务(例如,
bindService()
)时,可以使用AIDL


相反,如果您只希望其他应用程序或流程通过
startService()
启动您的服务,那么您不需要AIDL。

我明白了,因此标记为exported的服务可以启动,但不能通过binder对象跨流程边界操作?@justanother:正确
bindService()
可以在没有AIDL的情况下工作,但只能用于您自己流程中的服务。对于跨流程工作,您需要AIDL和AIDL生成的代码。原则上,通过检查AIDL生成的代码并尝试自己复制,您可以让
bindService()
跨流程工作,但我不知道这有多实际可以在没有AIDL的情况下工作,但仅适用于您自己流程中的服务。对于跨流程工作,您需要AIDL和AIDL生成的代码“实际上,您仍然可以使用
android.os.Messenger
或任何其他使用
Binder
协议的类(
transact()
onTransact()方法)但我同意艾德尔的观点simpler@pskink:对于
Messenger
,您甚至不需要
bindService()
。使用
startService()
@commonware是的,但它适用于任何
活页夹
:您不必使用“绑定服务”并从
服务#onBind
返回
活页夹
-您可以通过
startService
中使用的
意图
传递它