带Phonegap的旋转Android设备崩溃

带Phonegap的旋转Android设备崩溃,android,cordova,crash,screen-orientation,Android,Cordova,Crash,Screen Orientation,理想的行为是: 旋转时,重新构建布局,以适应新的屏幕尺寸。重建是用JQuery和Mathematic完成的,而不是CSS 脚本状态必须保持不变,同时运行计时器等。这些应该像什么都没有发生一样继续 为了实现这一点,我做了以下工作: 添加了android:configChanges=orientation | keyboard隐藏到清单中的所有活动中,以便自己处理方向更改注意:我没有针对特定的API,因此我假设它默认为API 1。这意味着无需向configChanges添加屏幕大小 为Orienti

理想的行为是:

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

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

为了实现这一点,我做了以下工作:

添加了android:configChanges=orientation | keyboard隐藏到清单中的所有活动中,以便自己处理方向更改注意:我没有针对特定的API,因此我假设它默认为API 1。这意味着无需向configChanges添加屏幕大小

为OrientionChange添加了侦听器:

window.onorientationchange=函数{ var方向=window.orientation; 开关定向{ 案例0: 更新缩放; 中断

    case 90:
        updateScaling();
        break;

    case -90:
        updateScaling();
      break;
  }
}
更新缩放仅调整布局

这有时有效,但有时设备会使emulator和真实设备崩溃。在emulator的日志中,我看到以下警告:

警告/活动管理器73:启动超时已过期,放弃唤醒锁定

我做了研究,发现在活动中添加更长的loadUrlTimeoutValue可能会有所帮助,而且,我在主要活动中添加了super.setIntegerPropertyLadurlTimeoutValue,60000;,但正如预期的那样也没有帮助

我发现很多人都在抱怨PhoneGap的旋转问题。也许这个框架在这方面有问题吗?我也用苹果设备进行了测试,在那里我甚至无法捕捉到旋转事件——iPhone模拟器甚至没有改变方向,iPad改变了方向,但没有调用事件处理程序,布局也没有改变保持相同大小。我尝试使用我发现的将侦听器附加到文档的解决方法。但也没有帮助

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


谢谢

我不太确定这是否解决了撞车问题,或者我在路上做了什么

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

$(window).resize(function() {
    updateScaling($('body').width());
}); 
它总是被调用并传递正确的宽度。据我记忆所及,它也适用于screen.width

在updateScaling中,我计算缩放因子并调整元素

我删除了window.onoritationchange

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

结论


$window.resize与android:configChanges=orientation结合使用| keyboardHidden对我有效。

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

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

$(window).resize(function() {
    updateScaling($('body').width());
}); 
它总是被调用并传递正确的宽度。据我记忆所及,它也适用于screen.width

在updateScaling中,我计算缩放因子并调整元素

我删除了window.onoritationchange

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

结论

$window.resize与android:configChanges=orientation结合使用| keyboardHidden适合我