2012-03-31 95 views

回答

8

我建議不要等待UI線程。

您可以爲您的任務使用Handlerrun方法將在Handler創建的同一線程中執行:

//delay in ms 
    int DELAY = 1000; 

    Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() {    
     @Override 
     public void run() { 
      Intent intent = new Intent(CurrentActivity.this, NextActivity.class); 
      startActivity(intent);     
     } 
    }, DELAY); 
+0

我做了類似的事情,但是我希望它「在延遲後做某事」它不喜歡我嘗試調用類時 意圖newClass = new Intent(this,ClassName.class); this.startActivity(newClass); – user1274830 2012-03-31 21:56:39

+0

不要調用this.startActivity(..)。省略「this」,只是調用startActivity(..) – thaussma 2012-03-31 22:06:26

+0

Elipse不喜歡這行代碼 - Intent class = new Intent(this,Failed.class); - 它是想讓我做到 - Intent class = new Intent(); - 但後來它不知道要拍攝什麼類。非常令人沮喪。 – user1274830 2012-03-31 22:10:59

-1

用戶界面在這段延遲期間是否需要做任何事情?如果沒有,你可以使用:

Thread.sleep(timeToWaitInMilliseconds); 

你的處理程序的按鈕。這會在幾秒內停止UI線程,但是,您的UI將在延遲期間「凍結」。

稍微好一點的選擇是使用一個AsyncTask和一個處理程序,它是一個新線程,並讓該線程在你想要延遲新的活動打開的時間內睡眠,然後在處理程序中打開新的活動。

asynctask對於你的情況我覺得好一點,因爲它允許用戶在你的「延遲」期間與UI進行交互。在AsyncTasks

此處瞭解詳情:

http://developer.android.com/reference/android/os/AsyncTask.html

+0

我剛剛嘗試了您的建議。點擊按鈕後,我要求它查看佈局。要求它延遲5000毫秒,然後轉到新的活動。 由於某些原因,它延遲了5秒,閃爍佈局一秒鐘,然後去新的活動。 – user1274830 2012-03-31 22:05:42