在android应用程序中使用WebSocket的更好方法是:异步i/o还是与线程同步i/o?

在android应用程序中使用WebSocket的更好方法是:异步i/o还是与线程同步i/o?,android,websocket,asyncsocket,Android,Websocket,Asyncsocket,我正在编写一个android客户端,它每20-30秒推送一次数据,还异步接收来自服务器的更新。 因为我还有其他UI组件,所以我无法阻止主线程 性能、复杂性、可维护性、易于使用的API等优点和缺点是什么。。使用方法: 与异步任务/线程同步i/o,用于将数据推送到服务器并从服务器接收事件 基于异步nio库的i/o 还建议是否有更好的方法。对于Android和UI应用程序,您不仅不应该阻止UI线程,而且对于较新版本的Android,根本不允许您在UI线程上进行任何联网 因此,即使是基于UI线程的NIO

我正在编写一个android客户端,它每20-30秒推送一次数据,还异步接收来自服务器的更新。 因为我还有其他UI组件,所以我无法阻止主线程

性能、复杂性、可维护性、易于使用的API等优点和缺点是什么。。使用方法:

与异步任务/线程同步i/o,用于将数据推送到服务器并从服务器接收事件 基于异步nio库的i/o
还建议是否有更好的方法。

对于Android和UI应用程序,您不仅不应该阻止UI线程,而且对于较新版本的Android,根本不允许您在UI线程上进行任何联网

因此,即使是基于UI线程的NIO网络通常也不是一种有效的方法

对于WebSocket,您可能需要查看:

这不需要NIO,但是在读写器的2个后台线程上。值得注意的是,它不在UI线程上进行任何联网。。包括建立连接

我们可能会在不久的将来重写它,在后台线程上执行旧式IO,因为:

在这种情况下,NIO不会买很多东西 b通过NIO实现TLS是一种PITA


免责声明:我是Autobahn的作者,为Tavendo工作。

在messenger服务中使用nio方法/Autobahn库是否与其他方法有所不同/更好?不确定我是否得到了您的要求。事实是,在UI线程上进行任何联网——无论是NIO还是非NIO——都无法在Android上工作。因此,Autobahn使用2个后台线程。目前它在这些方面做NIO,但在未来可能会做简单的阻塞IO。