gpt4 book ai didi

android - 使用 Phonegap 旋转 Android 设备时崩溃

转载 作者:行者123 更新时间:2023-11-29 14:01:27 24 4
gpt4 key购买 nike

期望的行为是这样的:

  • 在旋转时重构布局 - 以适应新的屏幕尺寸。重构是使用 JQuery 和数学而不是 CSS 完成的。

  • 脚本状态必须保持不变,同时运行计时器等。这些应该像什么都没发生一样继续。

为了实现这一点,我做了这个:

  • 将 android:configChanges="orientation|keyboardHidden"添加到 list 中的所有 Activity ,以自行处理方向更改(注意:我不针对某些 API,所以我想它默认为 API 1。这意味着不需要将 screenSize 添加到 configChanges)。

  • 为 orientationchange 添加了一个监听器:

    window.onorientationchange = function() { var orientation = window.orientation; 开关(方向){ 案例 0: 更新缩放(); 休息;

        case 90:
    updateScaling();
    break;

    case -90:
    updateScaling();
    break;
    }
    }

updateScaling 只调整布局。

这有时有效,但有时设备会崩溃(模拟器和真实设备)。在模拟器的日志中,我看到了这个警告:

WARN/ActivityManager(73): Launch timeout has expired, giving up wake lock!

我进行了研究,发现在 Activity 中添加更长的 loadUrlTimeoutValue 会有所帮助,而且我添加了 super.setIntegerProperty("loadUrlTimeoutValue", 60000);到主要 Activity ,但正如预期的那样也无济于事。

我发现很多人提示 PhoneGap 的旋转问题。也许框架只是这方面的错误?我也用 Apple 设备进行了测试,我什至无法捕捉到旋转事件——iPhone 模拟器甚至没有改变方向,iPad 改变了方向但没有调用事件处理程序并且布局保持相同的大小。我尝试使用我发现将监听器附加到文档的解决方法。但这也没有帮助。

是否有一种完全可靠的方法可以在旋转设备时重建布局?如果没有,我可以在使用某个应用程序初始化应用程序后禁用旋转吗(这意味着,我不想固定为纵向或横向 - 我希望应用程序在使用当前应用程序初始化后禁用旋转更改)。有可靠的方法来做到这一点吗?

谢谢

最佳答案

我不太确定这是否解决了崩溃问题,或者我“在路上”做的其他事情。

但我添加了一个可靠工作的监听器——至少在 Android 上是这样:

$(window).resize(function() {
updateScaling($('body').width());
});

它总是被调用并传递正确的宽度。据我所知,它也适用于 screen.width

在 updateScaling 中,我计算一个 scalingFactor 并调整我的元素。

我删除了 window.onorientationchange。

注意:可能是在崩溃发生时, list 中的 android:configChanges="keyboardHidden"而不是 android:configChanges="orientation|keyboardHidden"。 AFAIK 这意味着系统重建 Activity ,这可以解释超时。但在那种情况下我不知道为什么 super.setIntegerProperty("loadUrlTimeoutValue", 60000);没有帮助。

结论

$(window).resize 结合 android:configChanges="orientation|keyboardHidden"对我有用。

关于android - 使用 Phonegap 旋转 Android 设备时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9328265/

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