首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android异步API设计

Android异步API设计
EN

Stack Overflow用户
提问于 2014-08-19 10:08:30
回答 1查看 481关注 0票数 4

我正在编写一个本质上是异步的Android库(等待从USB设备连接到微USB端口的事件)。看看Android包是如何实现异步API的,我发现了几种不同的方法:

我应该如何设计我的API?对于何时使用各种API,有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2014-08-19 10:30:36

主要问题是您将设计一个同步的还是异步的API。

同步API

  • API用户需要手动创建一个线程/AsyncTask(或类似的),因此这方面的工作要多一些。
  • 误用它更容易--例如,通过在主线程上运行阻塞方法
  • 它比异步API更容易推理,因为代码流是流线型和线性的。

异步API

  • 在呼叫方更安全(永远不会阻止UI)
  • 由于回调(或意图、广播听众等),使用起来容易(有点)困难。

如果您选择同步API,那么您就完成了大部分工作;)

但是,如果您选择异步的,在Android情况下(正如您已经列出的那样),您将需要决定API实现将如何通知调用方正在完成的异步操作(或状态更改等)。

PendingIntent通常用于有限的一组操作(即启动活动或服务,或发送广播)。我假设您的库客户端会想要做更多不同的操作。

广播一个动作是一种选择。不过,它将通过“意图墙”将客户端与库分离开来。因此,例如,如果您的库希望将一些复杂的数据结构返回给调用方,则该数据结构需要是可散才能符合意图。广播也是“广播”的一种方式。这意味着多个侦听器可以接收消息。

话虽如此,我更喜欢使用带有回调接口的纯Java解决方案,除非有充分的理由使用Android特定的解决方案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25380748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档