0

我正在尝试制作一个 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 的步骤,但是应用程序不会更新并且它会崩溃。我认为线程过度加载内存并导致应用程序崩溃。

知道发生了什么吗?或更好的实施方式。

4

1 回答 1

1

我不确定您要做什么,但您的循环中有一些错误:

 while(imageCheck = true)
     myImage.setImageBitmap(finalImage);
     imageCheck = false;

1 你分配 imageCheck= true 而不是检查 imageCheck==true

2 你不使用 paranteses {} 所以 imageCheck=false 不在你的 while 循环内

3 你的循环可以永远运行

4 您正在对 runOnUIThread 进行无休止的调用,因为“while(true)”将继续运行:您需要这个 while 循环吗?

于 2013-03-30T20:34:19.327 回答