2014-10-10 61 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(); 
} 
相关问题