2013-05-06 3 views
0

스레드에서 액세스하거나 진행률을 업데이트하려고 할 때 진행 표시 줄이 표시되지 않습니다. 네트워크 활동이 완료 될 때까지 진행률 회 전자를 표시하는 것을 선호합니다.이 네트워크 활동은 서버에 텍스트 데이터를 게시하는 것입니다. 지금까지 가지고있는 코드는 도움이되었습니다.스레드에서 진행률 표시 줄 활성화 및 업데이트

Thread th = new Thread(){ 
     public void run() { 

        try { 
         sleep(5000); 

         while(cnt < 5000){ 
          activty.this.runOnUiThread(new Runnable(){ 
           public void run() 
           { 
            ProgressBar pd = (ProgressBar)findViewById(R.id.progressBar1); 
            pd.setVisibility(0); 
            pd.setMax(100); 

            pd.setProgress(cnt); 
            cnt += 100; 
           } 
          }); 
         } 
        } catch (InterruptedException e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
         } 
     } 

     int cnt = 100; 
    }; 
    th.start(); 
    ` 
+0

xml을 확인 했습니까? 다른보기가 진행률 막대만큼 충분한 공간을 남기지 않았을 수 있습니다. – Daniel

+0

거기도 좋은 눈, 나는 그것을 간과했을 수도 있습니다. – kabuto178

답변

2

이 정확하게 당신이 UI 스레드에서 귀하의 UI를 업데이트하는 방법 publishProgressonProgressUpdate을 별도의 스레드에서 데이터를 처리하고 포함하는, AsyncTask을 사용하고자 할 경우입니다.

Processes and Threads Guide에는 AsyncTask도 구현하는 방법의 예가 있습니다.

+0

일반적인 asynctask 클래스를 만드는 방법이 있습니까, 아니면 내 활동에서 수행해야하는 각 네트워크 활동마다 하나씩 만들어야합니다. – kabuto178

+1

@ kabuto178 시도해보십시오. http://stackoverflow.com/questions/14253421/how-one-interface-can-be-used-for-different-background-android-tasks/14376233#14376233, doInBackground에서 코드를 변경할 수 있습니다. – Pragnani

+0

@ kabuto178 -'AsyncTask'의 doInBackground는 매개 변수를 취할 수 있습니다. 예를 들어 유일한 차이점이 다운로드해야하는 파일 인 경우 AsyncTask에 전달하여 다시 사용할 수 있습니다. 새로운 NetworkAsyncTask(). execute (urlToDownload)'예를 들어 – ianhanniballake

관련 문제