gpt4 book ai didi

Android异步API设计

转载 作者:太空宇宙 更新时间:2023-11-03 10:45:05 28 4
gpt4 key购买 nike

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

我应该如何设计我的 API?对于何时使用每种 API 是否有任何建议?

最佳答案

主要问题是您要设计同步 API 还是异步 API。

同步 API

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

异步 API

  • 调用方更安全(永远不会阻塞 UI)
  • 由于回调(或 Intent 、广播监听器等)而变得(有点)难以使用

如果您选择同步 API,您就大功告成 ;)

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

PendingIntent 通常用于一组有限的操作(即启动 Activity 或服务,或发送广播)。我假设您的图书馆客户会想要执行更多不同的操作。

广播一个 Action 是一个选项。不过,它将通过“Intent 墙”将客户端与库分开。因此,例如,如果您的库想要向调用方返回一些复杂的数据结构,则该数据结构需要为 parcelable。以适应 Intent 。广播也是一种“广播”的方式。这意味着多个听众可以接收消息。

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

关于Android异步API设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25380748/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com