2012-01-02 4 views
1

소켓에서받은 bytearray에 imageview을 새로 고침하고 싶습니다.android에서 이미지 뷰를 새로 고치는 방법

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은 다른 스레드에서받은 바이트입니다. 나는 그것이 동일한 기본 아이콘으로 남아되지 working..It imageview..But를 새로 고칠

+0

maybe refreshDrawableState()? – Mondo

+0

는 또한하지만 while' –

답변

1

따라서 UI에 대한 모든 응답을 차단하고있어, 위의 코드는 메인 스레드에서이었다이었다.

내가 스레드를 주 스레드에서 코드로 옮기면 문제가 해결되었습니다. 이제 올바르게 작동합니다.

모든 답장을 보내 주셔서 감사합니다.

1

어느 이미지가 항상 같은오고, 또는 한 번만오고있다. 위의 코드를 올바른 위치에서 올바르게 트리거 한 경우 imageView를 새로 고쳐야하기 때문입니다.

다른 방식으로 디버깅 해보십시오. 새로 고침하는 코드는 괜찮습니다. all.The 문제에 대한 죄송합니다

+0

는 사실 내가 다른 스레드를 통해 읽기 android..bytearray하는 바탕 화면을 보내고 ... 작업 ...하지만 나는 경우가 작동 **하지 않도록 노력 코드를 업데이트했습니다. –

+0

'사용하여 반복 ** –

관련 문제