2010-09-01 114 views
1

我有两个应用程序App-1 & App-2。 App-2有一个启动App-1的按钮。Android可以避免onCreate()被调用吗?

需要的是为具有如同以下内容: -

  1. 用户启动的App-1(使用发射器)&活动A,B & C被启动&活性C在活动堆栈的顶部。
  2. 请注意,App-1的入口点是活动A.
  3. 用户按下主页键。
  4. 用户然后启动应用程序App-2。用户选择App-2中的按钮启动App-1。
  5. 在APP-2按钮的onClick()具有下面的代码: -

    意图I =新意图(); i.setAction(“com.x.y.z”); //解析为App-1 的活动A i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); i.putExtra(“x”,“y”); startActivity(i);

步骤-4后,onCreate()活性的被称为这是很正常的。但是我希望Android能够将整个活动堆栈带到前台,因为App-1正在运行。&Android并没有杀死它(如果我在步骤2之后启动了App-1,这种行为也是一样)。

我想让活动C显示给用户。

如果可以做到这一点,请帮助我。

我已经尝试将活动A作为singleTask & singleInstance。如果我这样做,只有活动A被带到前台,这不是我想要的。

的App-1的明显的片段看起来象下面这样: -

<activity android:name=".aa.a" 

     android:configChanges="orientation|keyboardHidden|locale" 
     android:label="@string/app_name" 
     android:theme="@android:style/Theme.NoDisplay" 
     > 
      <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
      <intent-filter> 
       <action android:name="com.x.y.z" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 

</activity> 
+1

NO。你不能避免onCreate()被调用!你需要在你的活动流程中找到另一种方式。 – ankitjaininfo 2010-09-01 12:37:18

+0

感谢Ankit的回应。我希望你已经完全阅读这篇文章,但我同意它需要很多耐心和时间。我认为这不是很难做到。开发人员可能希望采取这种行为来尽量减少要编写的代码数量,以模仿相同的行为。我不确定提供这样的选择有什么困难(当然有一些可以理解的限制)。 – Shivaprasad 2010-09-07 08:58:50

回答

1

FLAG_ACTIVITY_NEW_TASK通知的Android开始一个新的任务;新任务不包含B & C,因此不要指望它们中的任何一个被显示。 另外,FLAG_ACTIVITY_CLEAR_TOP删除B & C,这与您想要的完全相反。

尝试删除两个标志。

相关问题