我正在编写一个 android 客户端,它每 20-30 秒推送一次数据,并且还异步接收来自服务器的更新。因为我还有其他 UI 组件,所以我不能阻塞主线程。
使用的优点和缺点是什么(性能、复杂性、可维护性、易于使用的 API 等):
- 将 i/o 与异步任务/线程同步,用于将数据推送到服务器并从服务器接收事件
- 基于异步 nio lib 的 i/o
还建议是否有更好的方法。
我正在编写一个 android 客户端,它每 20-30 秒推送一次数据,并且还异步接收来自服务器的更新。因为我还有其他 UI 组件,所以我不能阻塞主线程。
使用的优点和缺点是什么(性能、复杂性、可维护性、易于使用的 API 等):
还建议是否有更好的方法。
对于 Android 和 UI 应用程序,您不仅不应该阻塞 UI 线程,而且对于较新版本的 Android,您根本不允许在 UI 线程上进行任何联网。
因此,即使是基于 NIO 的 UI 线程网络通常也不是一种可行的方法。
对于 WebSocket,您可能需要查看:https ://github.com/tavendo/AutobahnAndroid
这是 NIO,但在 2 个后台线程上供读写器使用。值得注意的是,它不会在 UI 线程上进行任何联网 .. 包括连接建立。
我们可能会在不久的将来重写它以在后台线程上执行老式 IO,因为:
a) NIO 在这种情况下不会买太多 b) 在 NIO 上实施 TLS 是一个 PITA
免责声明:我是 Autobahn 的作者,为 Tavendo 工作。