我的问题与此线程有关 -如何在 android 中刷新 imageview
我也试图通过套接字获取图像,对其进行解码,并将其设置在图像视图上。套接字需要保持打开状态,以防发送另一个图像,然后再次更新图像视图。
当在另一个线程中他们响应不在主线程中执行此操作时,我没有得到该部分。
从主要活动中,我应该打开一个新线程,该线程将“卡住”在“while(true)”上,以便它可以继续收听即将到来的图像,并且当发送完整图像时,它需要更新图像视图。但是imageview在主线程中(主线程等于UI线程?)所以它开始对我来说有点问题......
任何人?
// ADDED - 这是我的 asyncTask -
public class AsyncTask extends AsyncTask<Void, Void, Void> {
private DataInputStream dataInputStream = null;
private ImageView iv = null;
public RobotMapAsyncTask(DataInputStream dataStream, ImageView imageView) {
dataInputStream = dataStream;
iv = imageView;
}
@Override
protected Void doInBackground(Void... params) {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
byte[] byteChunk = new byte[1024];
Bitmap bitmap = null;
int c;
if (dataInputStream != null) {
while (true) {
try {
byteChunk = new byte[1024];
while ((c = dataInputStream.read(byteChunk)) != -1){
buffer.write(byteChunk, 0, c);
}
} catch (IOException e) {
e.printStackTrace();
}
bitmap = BitmapFactory.decodeByteArray(byteChunk, 0, byteChunk.length);
if (bitmap != null) {
//runOnUiThread(new Runnable() {
//public void run() {
//iv.setImageBitmap(bitmap);
//}
// });
}
}
}
return null;
}
但后来我显然不能调用 runOnUiThread 因为这不是一个活动......