2012-12-08 5 views
0

나는 pdf 파일을 생성하는 클래스가 있습니다. 이 클래스는 onCreate, onPause (등등) 메소드가 있다는 것을 의미하는 Activity에 의해 확장됩니다.스레드에서 활동 시작

pdf 파일을 생성하는 동안 생성되는 데 시간이 걸리므로 진행률 표시 줄을 표시하여 파일 생성 중임을 사용자에게 알립니다.

모든 것이 잘 작동한다고 생각합니다. 생성 버튼을 클릭하면 진행 막대가 몇 초 동결됩니다 (Logcat에 따르면 : 파일이 생성되는 동안 진행률 표시 줄이 멈춤).

내 문제는 파일을 생성하는 동안 진행률 막대를 멈출 수 없게 만드는 방법을 모르겠다는 것입니다.

Log.i(TAG, "PDF generation: " + position); 

final ProgressDialog dialog = new ProgressDialog(this); 
dialog.setCancelable(true); 
dialog.setIndeterminate(true); 
dialog.setMessage("Generating..."); 
dialog.show(); 

new Thread(new Runnable() { 

    @Override 
    public void run() { 

     startActivity(new Intent(getApplicationContext(), 
      PdfGenerator.class)); 

     runOnUiThread(new Runnable() { 

      @Override 
      public void run() { 
       dialog.hide(); 
      } 
     }); 

    } 

}).start(); 

답변

1
이 runOnUiThread를 사용하여 스레드에서 활동을 시작으로 코드를 변경

:

다음은 내 코드입니다

///... your code here.. 

    new Thread(new Runnable() { 

     @Override 
     public void run() { 

      Your_Current_Activity.this.runOnUiThread(new Runnable() { 

       @Override 
       public void run() { 

       dialog.cancel(); 

       // START ACTIVITY HERE 
       Your_Current_Activity.this.startActivity(new 
         Intent(Your_Current_Activity.this, 
             PdfGenerator.class)); 

       } 
      }); 

     } 

    }).start(); 
+0

가 지금은 좋은 것 같습니다하지만 일부 변경했다. dialog.hide()를 dialog.cancel()로 변경하고 새로운 활동을 시작한 후 이동했습니다. 감사합니다. – burjulius

+0

@juliuks :하지만'runOnUiThread'는 Activity 클래스의 메소드입니다. 그런 다음 Activity 컨텍스트를 사용하지 않으면 액세스 할 수 없습니다. 거의 환영합니다. firend :) –

+0

변경 사항을 이해하지 못했을 것입니다. Btw, 이제 코드는 다음과 같이 보입니다 : http://pastebin.com/fxB1Zz9i – burjulius