2012-01-02 87 views
1

我想刷新從socket接收的bytearray上的imageview如何刷新android中的imageview

new Thread(new Runnable() { 

      @Override 
      public void run() { 
       // TODO Auto-generated method stub 
       while (!socket.isClosed()) { 
        imgArray = receiveImagebytes(); 
       } 
      } 
     }).start(); 

     try { 
     Thread.sleep(5000); 
    } catch (InterruptedException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 


while (!socket.isClosed()) { 
      runOnUiThread(new Runnable() { 

       @Override 
       public void run() { 
        // TODO Auto-generated method stub 

        imageView.setImageBitmap(BitmapFactory.decodeByteArray(imgArray, 0, imgArray.length)); 
        imageView.invalidate(); 
       } 
      }); 

imgArray是在另一個線程中接收到的字節數組。我想刷新imageview ..但它不工作..它仍然具有相同的默認圖標

+0

也許refreshDrawableState()? – Mondo 2012-01-02 17:12:12

+0

我也試過,但也沒有工作... – 2012-01-02 17:27:34

回答

1

對不起。問題是上面的代碼在主線程中,因此阻止了對UI的所有響應。

當我將將代碼從主線程移到一個線程時,問題就解決了。現在它工作正常。

感謝所有回覆

1

要麼圖像始終相同,要麼它只來一次。 因爲如果您從正確的位置正確觸發了上述代碼,它必須刷新imageView。

試着用不同的方式調試它,代碼刷新就OK了。

+0

其實我正在發送桌面屏幕到android..bytearray是通過另一個線程讀取......但它的工作原理,如果我**而不是**使用'while while'迭代它 – 2012-01-02 17:30:03

+0

我已經更新了代碼 – 2012-01-02 17:49:37