2012-05-01 31 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? –