为什么新活动会在 ChromeOS 上创建新的 Windows?如何将它们限制在一个窗口内?



>问题

我有一个简单的 Android 应用程序,其中包含 3 个活动:登录、Browse_Catalog和View_Item。在ChromeOS上,我希望活动堆叠在一个窗口中。相反,每个活动记录都会显示在 ChromeOS 上独立管理的窗口中。为什么会这样?我该如何阻止这种行为?

请求

我希望有一些配置细节可以将活动堆叠在一个窗口中。 我尝试在启动活动的 Intent 中查找某些标志,或在清单中查找某些设置,但没有找到任何表明此行为是有意为之的内容,或者有办法禁用它。

技术细节

ChromeOS 76.0.3809.102 (Official Build)(64-bit)
Asus Chromebox 
Android Studio 3.4.2
targetSdkVersion: 28
minSdkVersion: 25
jvmTarget: 1.8

观察

  1. 据我所知,没有错误消息。 只是多个窗口的糟糕用户体验导致用户认为有三个单独的程序正在运行。

  2. 应该隐藏在反向堆栈上的活动响应速度不是很快,窗口管理器允许在对活动重新声明 z 排序之前短暂调整它们的大小。

  3. 窗口
  4. 管理器确实允许我从后台堆栈关闭活动/窗口(例如,浏览目录,同时查看项目(,但随后从顶部活动退出无处可去。

不令人满意的可能解决方法

我可以通过使活动全屏启动来解决此问题,但这感觉就像一个巨大的混乱。它不会阻止用户最小化单个窗口或调整其大小。

也许我可以将其作为具有多个片段的单个活动来做,但我不想投入那么多工作,除非我绝对必须这样做。

对于后代:我的错误是Browse_Catalog活动在清单中有一行

<activity ...
android:launchMode="singleInstance"
/>

这会将活动创建为单个"任务",并且不会在该任务中启动任何其他活动。 这是一个页面,其中包含有关活动,任务和BackStack的更多详细信息

默认行为(又名android:launchMode="standard"(是我所期望的,因此删除此虚假设置解决了问题。

相关内容

  • 没有找到相关文章

最新更新