问题描述
我有两个应用程序,即应用程序A和应用程序B,现在我想从应用程序A中启动应用程序B中的一个活动,该活动的启动模式为“单任务”。
订单: 活动X(App A)———>活动Y(App B)———>活动Z(应用B,launchMode =“ singleTask”)
作为默认的AndroidManifest配置,任务管理器中将显示两个App,我希望用户只能在任务管理器中看到App A标签,因此当他们在任务之间切换时,不要单击AppB。Android11之前Android R),我使用下面的属性taskAffinity解决了这个问题。
活动X和活动Z都将其添加到AndroidManifet.xml
android:taskAffinity="com.abc.xxx”
因此,这些活动都可以包含在一项活动任务中。 在Android 10中,它可以正常工作。
但是,它在Android11中不再起作用。而且,我没有发现与此场景相关的任何新功能。
如何使ApplicationA的活动任务容纳启动模式为singleTask的ApplicationB的活动?让用户在任务管理器中只能看到一个任务(ApplicationA)。
解决方法
不能。而且你不应该。它之前起作用的原因是<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/summernote/0.5.0/summernote.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/summernote/0.5.0/summernote.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/summernote/0.5.0/summernote-bs3.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.0.3/css/font-awesome.min.css">
<div class="container">
<textarea name="summernote" id="summernote" cols="30" rows="10">
</textarea>
</div>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
在taskAffinity
上胜过(覆盖)launchMode
。显然,他们已经更改/修复了Android 11中的问题。
如果将Activity
声明为singleTask
,那么这将告诉Android Activity
要成为其自身任务中的根Activity
。启动此Activity
时,应在一个新任务中启动它,而不是与Activity
进行启动时处于同一任务中。
在早期版本的Android中,如果Activity
与启动任务的根Activity
具有相同的taskAffinity
,则Activity
将被启动到同一任务中。从来没有清楚地记录下来,因此也不清楚这是“ bug”还是“功能”。看来他们终于在Android 11中对此进行了更改/修复。
请参阅我对这些相关问题的回答: