带有两个任务的单个Android应用程序及其导航

问题描述:

我正在开发一个调用应用程序。我的HomeActivity是一项单一任务活动。我的通话活动也是一项单一任务活动。带有两个任务的单个Android应用程序及其导航

从HomeActivity开始呼叫。在这一刻,我的应用程序有两个任务,因为它们都是singleTask。在通话屏幕中,我有一个按钮可以访问我的HomeActivity。

当我在通话屏幕中按主页按钮并导航回时,我的通话活动被破坏。但它不应该被破坏。它应该保持。

当我按下通话屏幕上的主页按钮时,我执行以下操作。

Intent intent = new Intent(); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); 
intent.setClass(this.getActivity(), MyHomeActivity.class); 
startActivity(intent); 

我的舱单申报:

<activity 
    android:name=".XXX.MyHomeActivity" 
    android:label="@string/app_name" 
    android:alwaysRetainTaskState="true" 
    android:launchMode="singleTask" 
    android:screenOrientation="portrait" 
    android:windowSoftInputMode="adjustNothing" 
    android:theme="@style/MyTheme" 
    > 
</activity> 
<activity 
    android:name=".XXX.MyCallActivity" 
    android:label="@string/app_name" 
    android:launchMode="singleTask" 
    android:screenOrientation="portrait" 
    android:theme="@style/MyTheme" 
    android:windowSoftInputMode="adjustResize"> 

从CallActivity充气HomeActivity:

Intent intent = new Intent(); 
intent.setClass(this.getActivity(), HomeActivity.class); 
startActivity(intent); 

膨化CallActivity:

Intent intent = new Intent(); 
intent.setClass(this, CallActivity.class); 
startActivity(intent); 

谁能帮助我与导航PA用来实现这个目标的?

为了有2个任务,你需要确保根的任务Activity有不同的是taskAffinity,否则Android会把两者都放在同一个任务中。默认taskAffinity是您的软件包的名称。

android:taskAffinity=""添加到<activity>声明之一。

根据使用FLAG_ACTIVITY_CLEAR_TASK将做如下的文件:

此标志将导致将与 活动相关的活动开始之前要清除任何现有任务。即, 该活动成为否则为空的任务的新根,并且任何旧活动都已完成。

所以,如果想让你的CallActivity留在后面堆栈,你可以简单地这样做:

Intent intent = new Intent(); 
intent.setClass(this.getActivity(), MyHomeActivity.class); 
startActivity(intent); 
+0

Umang,我现在试过了。即使在这种情况下,我的CallActivity也被破坏了,我不明白为什么。我也试过“intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);”。虽然没用。 – Ajitha

+0

会很好,如果你可以分享这两个活动的清单声明以及用于扩充它们的代码 –

+0

已更新原始问题。 – Ajitha