Android设备上的java服务器推送图像

时间:2013-03-30 19:01:10

标签: java android tcp android-ui

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

任何想法是什么?或者更好的实施方式。

1 个答案:

答案 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)'将继续运行:你需要这个循环吗?