gpt4 book ai didi

android - 在多窗口模式下窗口大小为 2/3 时,Activity 不会在方向更改时重新启动

转载 作者:太空狗 更新时间:2023-10-29 13:47:33 25 4
gpt4 key购买 nike

我在多窗口模式下遇到方向更改问题。当平板电脑设备的窗口大小为 2/3(在多窗口模式下)时, Activity 不会在更改方向时重新启动。因此,我的布局看起来不合适。

在多窗口模式下,当窗口大小为显示大小的 1/2 或 1/3 时, Activity 会在更改方向时正确重启。我在带有 Oreo 和 Pie 图像的 (Android Studio) Emulator 中使用 Nexus 7 和 Pixel C 设备尝试并确认了这一点。

我的应用以 Oreo 8.1 为目标,我没有在 list 中使用“android:configChanges”或“android:screenOrientation”。

请注意,2/3 窗口大小不是正方形,屏幕大小在两个方向上都有微小变化,如果方向更改未触发,则屏幕大小更改应触发 Activity 重启。

重现步骤:

  1. 在平板设备上以 Debug模式启动应用。
  2. 在 onCreate 和 onResume 中放置断点。
  3. 将其置于多窗口模式(默认 1/2 大小)。
  4. 旋转设备并检查断点是否触发(它会触发)。
  5. 将窗口大小调整为 2/3。
  6. 旋转设备并检查断点是否触发(它没有!)。

我是否遗漏了导致此问题的原因?或者这是一个错误还是其他什么?在这种情况下,如何让我的 Activity 重新启动?

最佳答案

一个有趣的问题,我从来不知道方向变化过程也有异常(exception)。我能够使用 Pixel C 模拟器 (Android 8.1) 和针对 API 级别 26 的应用重现该问题。

我想你的屏幕不仅仅是另一个列表,因为在这种情况下,12 像素的差异(1688 与 1676 如果我可以相信 LayoutInspector )无关紧要,所以我想添加一个可能有用的观察:

我的应用程序包含一个自定义的View,从日志中我可以看到调用了它的方法onMeasure()onLayout()即使 ActivityonCreate() 不是。所以这是您可以介入并进行一些微调的地方。

另一种选择是强制重新创建 Activity。您可以在检测到屏幕尺寸发生变化后立即调用 Activity 方法 recreate()(记录在 here 中)。要跟踪屏幕尺寸的变化,您可以创建一个自定义的 ViewGroup 覆盖 onLayout() 并将其用作您的 Activity 的根s 布局文件。

关于android - 在多窗口模式下窗口大小为 2/3 时,Activity 不会在方向更改时重新启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51934870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com