2011. 3. 29. 09:00
private ProgressDialog mProgressDialog = null;

private Handler handler = new Handler();



...
mainProcessing();
...



    private void mainProcessing() 
    {
     // 시간이 많이 드는 작업을 자식 스레드로 옮긴다.
     Thread thread = new Thread(null, doBackgroundThreadProcessing, "Background");
     thread.start();
    }
    
    // 백그라운드 처리 메서드를 실행하는 Runnable.
    private Runnable doBackgroundThreadProcessing = new Runnable()
    {
     public void run()
     {
     backgroundThreadProcessing();
     }
    };
    
    // 백그라운드에서 몇 가지 처리를 수행하는 메서드.
    private void backgroundThreadProcessing()
    {    
     Log.d("Thread Start", "Thread Start~!");

     try 
     {
    //+
   // [...시간 소모적인 작업들...]
   //-
         
            handler.post(doUpdateGUI);
     }
     catch (Exception ex)
     {
     ex.toString();
     }
    }
    
    // GUI 업데이트 메서드를 실행하는 Runnable.
    public Runnable doUpdateGUI = new Runnable()
    {
     public void run()
     {
     updateGUI();
     }
    };
    
    public void updateGUI()
    {
     // [...다이얼로그를 오픈하거나 GUI 요소를 수정할 수 있다...]
    }
Posted by newkie