题
我有侦听套接字的服务。当接收到特定输入它是创造一个活动。当接收到另一输入,它是杀死此活动。我已经挣扎了一段时间,使该服务通过AIDL活动通信( HTTP ://developer.android.com/guide/developing/tools/aidl.html ),但这似乎没有效果。我认为AIDL是当要交谈的过程是一种服务,而不是当它是一个活动的唯一有效的?我很想对如何解决我的问题的一些指导或建议。
干杯,
解决方案
我有监听到一个服务 插座。当接收某一输入 它是创造一个活动。
请让这个配置。服务不应该首发,除了在活动的非常的异常情况(例如,插座是SIP连接和您要创建一个VOIP客户端)。弹出一个活动中断在任何他们正在做的用户。
当接收其他输入,它是 杀此活动。
我见过的唯一的场景,这是一个有效的模式被驳回的通话中画面时,对方挂断线路。如果要创建一个VOIP客户端,你提出的模式应该是好的,但在其他方面,请重新考虑其使用它在用户中间的活性消失。
我认为AIDL是唯一有效的时 该过程将被谈话是 一个服务,而不是当它是活动?
没有,它工作在反向方向上也一样,但通常只有当活动是一个启动服务和结合它。更重要的是,AIDL仅用于跨进程通信。
我喜欢某些方向或 如何解决我的建议 问题
您还没有真正提供对通信的性质足够的信息给你一个完整的答案。究竟什么是服务试图告诉活动?是活动还尝试与服务进行通信?
从活动到服务用于正在进行的通信的推荐模式是使用本地绑定模式。你会发现这样的一个例子您的SDK样本中,你可以找到一个的此处以及
然后,服务具有用于传送回客户端选择:通过回调(例如,在由Smiljanić先生提供的答案Handler
)或经由广播Intents
。在回调的情况下,该活动将需要绑定到服务,以获得访问某个API提供的回调对象。然后,服务将不放该对象,并在关键事件调用它的方法。
如果您的服务做在后台线程的主要工作,你需要确保你的UI操作让UI线程上执行。所述Handler
是一个方法,它