2014-10-10 67 views
1

基本上我需要的是重新創建一個Activity每次我呼叫startActivity()將實例移動到前面而不會破壞其他活動。如何打開一個Activity的前一個實例並重新創建它?

舉例來說,如果我有在活動堆棧

A-> B-> C-> d

和DI想開B,我目前使用的標誌是FLAG_ACTIVITY_REORDER_TO_FRONT這使得Activity堆棧處於這種狀態:A->C->D->B。在活動堆棧中的順序是完美的,但是,該標誌Activity未被重新創建,並且onNewIntent()被調用。

由於該Activity的複雜性,我不想重構了很多東西,我要的是重新從頭B(onCreate()必須調用),而不是在onNewIntent()方法執行我的邏輯。活動堆棧應該具有​​與使用FLAG_ACTIVITY_REORDER_TO_FRONT相同的狀態。任何想法?您的幫助將不勝感激。 :)

+0

它會一直是這樣的順序還是你需要這種方式?如果你有一個E,它叫C? – codeMagic 2014-10-10 14:12:58

+0

[FLAG_ACTIVITY_CLEAR_TASK](http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TASK)可能是你想要的 – codeMagic 2014-10-10 14:15:08

+0

這只是一個例子,命令coulb是不同的,基本上我需要的是每個活動只有一個實例,並且在我們調用startActivity請求一個已經存在於活動中的Activity時,它必須移動到前面,但我想調用onCreate方法。 – Androider 2014-10-10 14:15:17

回答

0

如果您的所有工作都發生在onCreate(),並且您希望在onNewIntent()範圍內工作,那麼您可以通過一個簡單的重新因子逃脫。你所有的代碼都在setupActivity()的調用中。

public void onCreate (Bundle savedInstanceStateF) 
{ 
    super.onCreate (savedInstanceStateF); 
    setupActivity(); 
} 

public void onNewIntent(Intent intentF) 
{ 
    super.onNewIntent(intentF); 
    setupActivity(); 
} 
相關問題