我正在编写一个本质上是异步的Android库(等待从USB设备连接到微USB端口的事件)。看看Android包是如何实现异步API的,我发现了几种不同的方法:
PendingIntent
并在事件发生时发送它(例如:UsbManager.requestPermission()、NfcAdapter.enableForegroundDispatch()。我应该如何设计我的API?对于何时使用各种API,有什么建议吗?
发布于 2014-08-19 10:30:36
主要问题是您将设计一个同步的还是异步的API。
同步API
异步API
如果您选择同步API,那么您就完成了大部分工作;)
但是,如果您选择异步的,在Android情况下(正如您已经列出的那样),您将需要决定API实现将如何通知调用方正在完成的异步操作(或状态更改等)。
PendingIntent通常用于有限的一组操作(即启动活动或服务,或发送广播)。我假设您的库客户端会想要做更多不同的操作。
广播一个动作是一种选择。不过,它将通过“意图墙”将客户端与库分离开来。因此,例如,如果您的库希望将一些复杂的数据结构返回给调用方,则该数据结构需要是可散才能符合意图。广播也是“广播”的一种方式。这意味着多个侦听器可以接收消息。
话虽如此,我更喜欢使用带有回调接口的纯Java解决方案,除非有充分的理由使用Android特定的解决方案。
https://stackoverflow.com/questions/25380748
复制相似问题