2012-05-06 5 views
0

클릭하면 내 앱의 버튼이 나타납니다 (결과에 대한 의도로 사진 갤러리로 이동). 그림을 선택하면 결과가 다시 돌아오고 독립 실행 형 방법을 사용하여 이미지를 전송하기 시작합니다.안드로이드, 블루투스를 통해 데이터를 보내는 동안 UI를 업데이트하는 방법

문제는 갤러리 화면에 UI가 멈추어 화면이 어두워 질 때까지 전송이 완료 될 때까지 ... UI에서 실행하여 UI를 업데이트하려고하지만 작동하지 않습니다.

while ((bytesRead = bis.read(buf, 0, buf.length)) != -1) 
     { 
      BT_data_out.write(buf, 0, bytesRead); 
      if(fill++ > 2) {BT_data_out.flush(); fill = 0;}; 
      prgrss += bytesRead; 
      final String done = Integer.toString(prgrss); 
      final String total = Integer.toString(fileL); 

      if(update_rate > (50000/bufSize)) { 
       update_rate = 0; 
       runOnUiThread(new Runnable() 
       { 
        @Override 
        public void run() 
        { 
         mTextMISC.setText(done+"/"+total+" B"); 
        } 
       }); 

      } 
      update_rate++; 
     } 

전송이 완료되면 UI 스레드의 최종 효과를 볼 수 있지만 모든 중간 업데이트는 볼 수 없습니다.

+0

새 스레드를 만들어 데이터를 전송하는 것이 좋습니다. – neohope

답변

2

보조 스레드에서 기본 UI 스레드를 기본적으로 업데이트 할 수 없습니다. 이렇게하려면 Handler을 기본 UI 스레드에 첨부하고 보조 UI에서 메시지를 게시해야합니다. 또는 Androids 구현 인 AsyncTask을 사용할 수 있으며 스레드와 핸들러를 훨씬 쉽게 사용할 수 있습니다.

관련 문제