【发布时间】: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