我写了一个小客户端服务器应用程序,它通过tcp传输Bitmaps。服务器部分就像一个魅力,但在客户端,我不知道如何显示收到的位图。每次在活动中接收到新图片时,客户端后端都会调用,该应该更新并显示位图...最多25 fps。 什么是最好的解决方案?
我写了一个自己的视图,但是调用setContentView
对我不起作用,它错过显示位图并且屏幕保持黑色,直到服务器关闭,然后正确显示一个图像。我甚至试过这样的事情:
this.image = (ImageView) findViewById(R.id.imageView1);
和
public void setImage(BufferedImage bufImage) {
if (bufImage.hasBitmap()) {
this.image.setImageBitmap(bufImage.getBitmap());
}
}
(我写了一个自己的BufferedImage类,它包含正确的位图)
即使使用image.invalidate(),在服务器关闭连接之前也没有任何事情......
答案 0 :(得分:0)
听起来好像你正在用户界面线程上做你的网络IO。在这种情况下会发生的是UI中的任何内容都不会更新,直到网络操作完成。如果是这样,您需要创建一个线程来运行服务器IO,并让它回调到具有要显示的帧的UI线程。这里有一些关于线程和用户界面如何交互的一般信息,如果有的话应该有所帮助:
http://developer.android.com/resources/articles/painless-threading.html