2013-03-30 88 views
0

我想製作一個java tcp服務器,它將圖像發送到所有連接的android設備。安卓設備上的java服務器推送圖像

然後設備應該將此圖像設置爲背景。我知道如何將圖像從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的腳步,但應用程序不會更新並崩潰。我認爲線程已經過載了內存並導致應用程序崩潰。

任何想法什麼是布萊恩?或者更好的實施方式。

回答

1

我不知道你正在嘗試做的,但也有一些錯誤,在循環:

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

1分配imageCheck =真不是檢查imageCheck ==真

2你做不要使用paranteses {}所以imageCheck =假是不是你的while循環中

3你的循環可以運行永遠

4你正在做的運行無盡的通話OnUIThread作爲'while(true)'將繼續運行:你需要這個while循環嗎?

+0

哦,這是爲什麼。我錯過了額外的=和{} –

相關問題