安卓中的Binder回调是什么?

29

我一直在观看Virgil Dobjanschi关于在Android上实现REST服务和内容提供者的正确方法的Google I/O演示。http://code.google.com/events/io/2010/sessions/developing-RESTful-android-apps.html

根据视频,我正在以错误的方式进行操作,这并不奇怪,因为正确的方式很难。无论如何,在视频中展示了应许之地后,我遇到了一个小问题,就是如何到达那里。

我已经掌握了大部分技能,但是唯一让我无法理解的是Virgil在幻灯片中提到的Binder Callback(请参见上面的链接),第43页显示第2步使用startService(intent)启动服务,第10步使用Binder Callback返回状态信息。演示文稿中没有任何示例代码,这令人非常沮丧。他谈到了开源Twitter客户端,该客户端显然使用此方法,但目前还没有公布,而该公告是在4月份发布的。

在视频中,他说:“什么是Binder Callback?将其视为传递给请求意图的接口。”

我已经搜遍了所有地方,但是没有找到任何文档或示例,展示如何将回调作为意图的一部分传递。也无法想出其他传递回调的方法。
我认为他可能指的是绑定服务并以此实现回调。然而,他特别指的是本地服务和使用strarSerice()而不是bindService()。而且使用bindService()时,如果活动被销毁,服务将被销毁,这违背了初衷。解决方法是使用startService(),然后bindService(),并在整个过程中保持服务运行。bindService()的另一个问题是,在onServiceConnected()完成之前无法使用回调,这进一步复杂了代码,因为操作指令不能在意图中传递,因为返回回调可能来不及返回结果。
我只对使用推荐方法实现感兴趣。有人能够解释一下Binder Callback是什么以及如何编码吗?此外,除了成为单例之外,有人知道Service Helper看起来像什么吗?
任何帮助都将不胜感激。 谢谢 克莱夫
1个回答

14

太好了,谢谢。我之前不熟悉ResultReceiver,但它似乎确实符合Virgil所说的要求。我已经实现了它,而且运行良好。只是好奇,你为什么从ResultReceiver切换到createPendingResult()? - Clive Jackson
@Clive Jackson:我曾经花了一段时间来研究ResultReceiver,但最终决定暂时搁置它。也许将来我会回来再尝试。 - CommonsWare

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接