我正在尝试侦听将图片发送到我的 android 的连接,然后将此图像设置为图像视图。
该过程应自动完成以模拟推送内容行为。
此代码在 TCPConHandler 类中
public void listenForIncomingImageFlag() {
new Thread(new Runnable() {
@Override
public void run() {
try {
FlagScan = new Scanner(mySocket.getInputStream());
while (true) {
Flag = FlagScan.nextInt();
Log.d("FLagImage", "Flag ="+Flag);
if (Flag == 1) {
listenForIncomingImage(true);
Flag = 0;
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
}
只要运行 tcp 连接的线程返回一个套接字,就会调用这个函数。然后它启动另一个函数listenForIncomingImage。
public void listenForIncomingImage(boolean b) {
check = b;
Thread InComImage = new Thread(new Runnable() {
@Override
public void run() {
try {
inComImageBitmap = BitmapFactory.decodeStream(mySocket
.getInputStream());
MainActivity.setImage(inComImageBitmap, true);
check = false;
Log.d("Bitmap", "Bitmap receviced and sent to method");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
InComImage.start();
}
现在的事情是将图像传递给 mainactivity 中的 imageUpdate 函数,如果我使用的是 runOnUiThread,我会收到调用非静态方法的错误。
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 时启动这个线程,并在接收位图时使用从 tcpConHandler 类发送的 imagecheck 布尔值以某种方式阻止它。
这样做会导致应用程序超载内存并崩溃是否有更好的方法来模拟 android 上的推送内容行为。
无论如何,在 mainactivity 上是否有一个函数,它运行一个带有 while(true) 块的线程,可以更新 ui 并且可以是静态的?. 或任何类似的实现。