我正在开发一个调用应用程序。我的HomeActivity是一个singleTask活动。我的通话活动也是单一任务活动。
从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);
有人可以帮助我使用导航参数来实现这个目标吗?
答案 0 :(得分:1)
要完成2项任务,您需要确保任务的根Activity
具有不同的taskAffinity
,否则Android会将两者放在同一任务中。默认taskAffinity
是您的包的名称。
将android:taskAffinity=""
添加到其中一个<activity>
声明。
答案 1 :(得分:0)
根据使用FLAG_ACTIVITY_CLEAR_TASK的文档,将执行以下操作:
此标志将导致与之关联的任何现有任务 活动开始前要清除的活动。那是, 活动成为一个空的任务的新根,任何 旧的活动已经完成。
因此,如果希望您的CallActivity留在后台,您可以这样做:
Intent intent = new Intent();
intent.setClass(this.getActivity(), MyHomeActivity.class);
startActivity(intent);