【问题标题】:Rotating Android device with Phonegap crashes使用 Phonegap 旋转 Android 设备崩溃
【发布时间】:2012-02-20 19:38:42
【问题描述】:

期望的行为是这样的:

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

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

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

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

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

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

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

updateScaling 只调整布局。

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

WARN/ActivityManager(73):启动超时已过期,放弃唤醒锁!

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

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

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

谢谢

【问题讨论】:

    标签: android cordova crash screen-orientation


    【解决方案1】:

    我不太确定这是否解决了崩溃问题,或者我在“途中”做了什么。

    但我添加了一个可靠的侦听器 - 至少在 Android 上:

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

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

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

    我删除了 window.onorientationchange。

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

    结论

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多