2012-01-02 2 views
1

Я хочу обновить imageview на bytearray, полученный от socket.Как обновить изображение в 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 является ByteArray получил в другом потоке. Я хочу обновить изображение ... Но он не работает. Он остается с одинаковым значком по умолчанию.

+0

возможно refreshDrawableState()? – Mondo

+0

Я тоже пробовал, но не работал ... –

ответ

1

Извините. Проблема была в том, что приведенный выше код был в основном потоке, таким образом, блокировал все ответы на пользовательский интерфейс.

Проблема решена, когда я переместил код в нить из основного потока. Теперь он работает правильно.

Thanks for все ответы

1

Либо изображение идет одинаково все время, либо оно приходит только один раз. Потому что, если вы правильно вызвали вышеуказанный код с нужного места, он должен обновить imageView.

Попробуйте отладить его по-разному, код для обновления в порядке.

+0

На самом деле я отправляю экран рабочего стола на android..bytearray читается через другой поток ... Но он работает, если я ** не ** итерировал его, используя 'while' –

+0

Я обновил код –

Смежные вопросы