0

接続されているすべての Android デバイスにイメージを送信する Java tcp サーバーを作成しようとしています。

次に、デバイスはこの画像を背景として設定する必要があります。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 を更新するためにメイン アクティビティで使用しているトレッドですが、アプリは更新されず、クラッシュします。スレッドがメモリをオーバーロードし、アプリがクラッシュする原因になっていると思います。

何が起こっているのですか?または実装のためのより良い方法。

4

1 に答える 1

1

何をしようとしているのかわかりませんが、ループにいくつかのエラーがあります:

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

1 imageCheck==true をチェックする代わりに imageCheck= true を割り当てます

2 括弧 {} を使用しないため、imageCheck=false は while ループ内にありません

3 ループは永久に実行される可能性があります

4 'while(true)' が実行を継続するため、runOnUIThread の無限の呼び出しを行っています: この while ループが必要ですか?

于 2013-03-30T20:34:19.327 に答える