我正在尝试做一个java tcp服务器,将发送一个图像到所有连接的android设备。
然后,设备应将此图像设置为背景。我知道如何从java服务器向android设备发送图像。但我想让android一直侦听传入的流,每当它获得图像时,它就会将其设置为背景。
public void listenForIncomingImage() {
Thread InComImage = new Thread(new Runnable() {
@Override
public void run() {
while (true) {
try {
inComImageBitmap = BitmapFactory.decodeStream(mySocket
.getInputStream());
MainActivity.setImage(inComImageBitmap, true);
Log.d("Bitmap", "Bitmap receviced and sent to method");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
});
InComImage.start();
}这是在android端,它将图像发送到Mainactivity。
public void imageUpdate() {
new Thread(new Runnable() {
@Override
public void run() {
while (true) {
runOnUiThread(new Runnable() {
public void run() {
while(imageCheck = true)
myImage.setImageBitmap(finalImage);
imageCheck = false;
}
});
}
}
}).start();
}这是我在主活动中用来更新UI的tread,但是应用程序不会更新,它会崩溃。我认为线程超载了内存,导致应用程序崩溃。
知道是怎么回事吗?或者一种更好的实现方式。
发布于 2013-03-31 04:34:19
我不确定您正在尝试做什么,但是您的循环中有一些错误:
while(imageCheck = true)
myImage.setImageBitmap(finalImage);
imageCheck = false;1将imageCheck=赋值为true,而不是检查imageCheck==true
2您没有使用paranteses {},因此imageCheck=false不在while循环中
3你的循环可能永远运行下去。
4你正在无休止地调用runOnUIThread,因为' while (true)‘将继续运行:你需要这个while循环吗?
https://stackoverflow.com/questions/15722292
复制相似问题