2012-05-01 8 views
1

스레드에 대한 질문이 있습니다. 나는 여기서 무슨 일이 일어나고 있는지 확신하지 못한다. 장기적인 활동이 끝날 때까지 진행 대화 상자가 끝나지 않을 것이지만, 그 일은 일어나지 않습니다. 나는 긴 활동을 시작하고, 끝내고, 회 전자를 닫고, 의도를 가지고 새로운 활동을 시작하길 원합니다.스레드에서 새로운 활동 시작

final ProgressDialog spinnerDialog = ProgressDialog.show( 
       MainScreen.this, "", 
       "Waiting for accurate (> 10 meters) GPS coordinates...Please wait. ", true); 
      new Thread(new Runnable() { 
       public void run() { 
        //Do something that takes a while 
        spinnerDialog.dismiss(); 
        return; 
       } 
      }).start(); 

       Intent tvi = new Intent(); 
       tvi.setClass(getInstance(), TabbedView.class); 
       startActivity(tvi); 

답변

0

새 활동 시작은 메인 (UI) 스레드에서 수행해야합니다. 그러나 새 스레드를 시작한 후에 코드를 작성한다고해서 의도를 작성하는 데 필요한 모든 정보가 보장되는 것은 아닙니다. 여기 핸들러의 개발자 페이지에 대한 링크가 더 중요한 핸들러

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    progress = (ProgressBar) findViewById(R.id.progressBar1); 
    handler = new Handler(); 
    startprogress(); 
} 

public void startProgress(View view) { 
    // Do something long 
    Runnable runnable = new Runnable() { 
     @Override 
     public void run() { 
      //do long stuff (like getting info for intent) 
      handler.post(new Runnable() { 
      @Override 
      public void run() { 
       //make new intent 
       //start new activity with intent you just made 
      } 
     }); 
     } 
    } 
    }; 
    new Thread(runnable).start(); 
} 

}

등을 사용하는 것이 좋습니다 : http://developer.android.com/reference/android/os/Handler.html

+0

어떻게 내가해서 ProgressDialog이 할 수 있습니까? –