2011-05-26 257 views
3


我在重新開始活動時遇到困惑..我有兩個功能可以很好地執行相同的任務。請指導我哪個最好,爲什麼?Android活動重新啓動

public void restart() 
    { 
     Intent intent = getIntent(); 
     overridePendingTransition(0, 0); 
     intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
     finish(); 
     overridePendingTransition(R.anim.fade,R.anim.fade); 
     startActivity(intent); 

    } 

public void restart() 
    {   
     onCreate(); 
    } 

在此先感謝?

+0

你應該學習活動的生命週期。 – Kakey 2011-05-26 05:58:06

回答

3

我認爲這是一個更清潔的方式滿足您的需求。

Intent intent = getIntent(); 
    overridePendingTransition(0, 0); 
    intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
    finish(); 
    overridePendingTransition(0, 0); 
    startActivity(intent); 
+0

+1。那是我的想法,但無法解釋爲什麼它比其他更好。 – Mudassir 2011-05-26 05:59:33

+0

謝謝你。請你解釋爲什麼不使用第二個選項 – GouravJn 2011-05-26 06:01:21

+0

基本上,當我們保存狀態'Activity'時,我們稱之爲'onCreate(Bundle)'以防止旋轉......其他方面只是'finish() '並再次打電話給這個意圖。 – 2011-05-26 06:09:57

0

系統中的活動作爲活動堆棧進行管理。當一個新的活動開始時,它被放置在堆棧頂部併成爲正在運行的活動 - 前一個活動始終保持在堆棧下方,並且在新活動退出之前不會再次到達前臺。

更多信息請參見Activity

+0

感謝您的回覆,但是當我關閉正在運行的活動時,它會正常死亡而不會顯示超常的行爲(如果是第二種選擇)...... – GouravJn 2011-05-26 06:17:29