android - FLAG_ACTIVITY_NEW_TASK 未按预期运行

标签 android android-manifest

启动新 Activity 时,我遇到了关于 FLAG_ACTIVITY_NEW_TASK 标志的问题。

目前我有 2 个应用程序:应用程序 A 仅包含一个服务,它可以启动应用程序 B 的主要 Activity (应用程序 B 有 1 Activity 是它的主要 Activity )

我的问题是:当应用程序 B 处于 Activity 状态时(它的主要 Activity 对用户可见,并且它是其任务中的唯一 Activity ),服务获取应用程序 B 包名称的启动 Intent (来自 PackageManager) 并向其添加 FLAG_ACTIVITY_NEW_TASK 标志(它必须这样做,因为它不是 Activity 上下文,而是服务上下文)。

现在,在启动此 Intent 时,我预计不会发生任何事情,因为开发人员指南中的文档如下:

FLAG_ACTIVITY_NEW_TASK

When using this flag, if a task is already running for the activity you are now starting, then a new activity will not be started; instead, the current task will simply be brought to the front of the screen with the state it was last in.

但是,由于某种原因,应用程序 B 的另一个主要 Activity 在已经存在的 Activity 之上创建并启动,所以我在应用程序 B 任务中有 2 个主要 Activity 。

主要 Activity 没有在 list 中设置特殊属性,因此它的 launchMode 属性自动设置为标准。

谢谢!

最佳答案

您是否尝试过在应用程序 B 的 AndroidManifest.xml 中将应用程序 B 中的主要 Activity 的启动模式更改为 SingleTask 或 SingleInstance?

参见 Launch mode获取更多信息。

关于android - FLAG_ACTIVITY_NEW_TASK 未按预期运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6929867/

相关文章:

android - 加载凭据时更新到 SDK 4.1.0 后 MapBox Android 应用程序崩溃

android - 使用我的 Android 应用程序添加隐私政策的最简单方法

java - 当我通过抽屉导航单击调用第二个 Activity 时,应用程序停止工作

android - Achartengine 平移动画

android - 如何检测Android WebRTC轨道结束

android - 使用Azure开发网站,然后为其创建原生iOS和Android应用程序,什么是好的数据架构?

android - 显示版本名称

AndroidManifest.xml 隐含权限与显式权限(uses-feature 与 uses-permission)

android - 读取Android文件系统中的所有文件

android - 属性 application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) 来自 [com.android.support :support-compat:28. 0.0]