我正在尝试创建一个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();
}
这是我在mainactivity中使用的脚本来更新UI但是应用程序不会更新并且崩溃。我认为该线程过度加载内存并导致应用程序崩溃。
任何想法是什么?或者更好的实施方式。
答案 0 :(得分:1)
我不确定你要做什么,但你的循环中有一些错误:
while(imageCheck = true)
myImage.setImageBitmap(finalImage);
imageCheck = false;
1你指定imageCheck = true而不是检查imageCheck == true
2你不使用paranteses {}所以imageCheck = false不在你的while循环中
3你的循环可以永远运行
4你正在进行无休止的runOnUIThread调用,因为'while(true)'将继续运行:你需要这个循环吗?