我不擅长Android技术,因此我发布了一个问题。如何在Android中有效地与UI线程进行通信?
远程服务器在具有高频的TCP连接(最高可达30 fps)发送图片到Android设备。 Android设备将获取图片并将其显示在ImageView容器中(模拟视频)。
促使UI操作只从主线程使我得到了一些性能问题。现在,网络接收操作正在单线程中运行,根据docs将数据移动到每个接收到的PIC上的UI线程。
我有两个想法,更好的性能:
- 跳过一些图片(UI线程更新本身,并采取一些资源最新的框架与联网线共享)
- 不知何故进行优化的绘制过程(只是现在的我将位图分配给ImageView)
由于Android体验差,我无法确定是否赞赏此想法。因此,欢迎任何建议。 Thx。
也许第二个线程从ConcurrentLinkedQueue或任何其他线程安全队列中读取并将轮询的图像发布到您的视图? – JacksOnF1re
@ JacksOnF1re这可能是一个好主意(我正在考虑自己实现线程安全队列),我会测试它的性能。 但我认为,真正的里程碑是在绘制屏幕上的影像的方式(现在我建立从原料JPEG/PNG/BMP数据的位图,并将其分配给ImageView的)。 – f4f
如果你有服务器的控制权,我会把它作为UDP视频流。 – nasch