Android 上的 jQM + WL - 横向 CPU 高
Posted
技术标签:
【中文标题】Android 上的 jQM + WL - 横向 CPU 高【英文标题】:jQM + WL on Android - High CPU in landscape 【发布时间】:2014-12-03 03:45:49 【问题描述】:我的应用程序的当前版本在 android 4.0.4 上运行在一个古老的 Galaxy Tab 上,当它以横向运行时有一个奇怪的问题。我打开了 CPU 使用开发者选项,我可以看到当应用处于空闲状态时,单个内核正在被充分利用,即使在它的登录屏幕上也是如此。
我使用的是 jQM 1.4.4,WL 6.2.0.01-20141027-1531。
当很明显我的应用的 CPU 使用率很高时,我切换到纵向,CPU 使用率完全消失,应用再次响应。
步长(几秒钟后的 CPU 使用率)
登录屏幕(高) 点击文本字段,出现键盘(无) 隐藏键盘(无) 切换到纵向(无) 切换到横向(高)最重要的是,当我从纵向切换到横向时,视图不会在新方面重绘。视图被限制在与屏幕高度(或纵向宽度)一样宽的区域(方形)。固定标题消失,但视图是交互式的。要解决此问题,您可以点击显示键盘的文本字段。视图更新以填满屏幕,CPU 使用率再次下降。
另外需要注意的是,该问题在之前版本的应用程序中不存在。我已经查看了版本之间的所有更改,但没有什么特别突出的会导致这样的问题。
嫌疑人:
页面或页面容器、弹出窗口或固定标题正在做很多通常只应在调整窗口大小时发生的工作(此处没有直接更改逻辑); CSS,尤其是一些响应式查询(横向和纵向之间有一个断点)(没有响应式 CSS 更改)其他信息:
运行 4.2.2 的 Samsung Tab 3 或 4.4.4 上的 Nexus 7 没有报告任何问题 尝试使用 weinre 来分析此问题,但打开应用后不久就失去了连接(同样,以前的版本很好) 两台相同目标设备(Samsung Galaxy Tab 10.1)之间的细微差别:一台平板电脑的性能总是更好我即将回滚到旧代码库并反复添加代码以查看问题出在哪里。
感谢阅读。任何指针或建议显然都非常感谢。
更新 1
我在 Eclipse 中进行了分析(结果发现 Timeline 检查器选项卡在 weinre 中毫无用处)。
https://www.dropbox.com/s/ke0a9c2z9krhucu/highThreadUsage.PNG
对我来说意义不大。我怀疑该配置文件真正所说的只是“webview 正在完成所有工作”。
我在同一个项目中创建了一个新的混合应用程序,并将所有内容复制到其中。我将开始剥离代码/功能块,以首先解决问题。
【问题讨论】:
您能否在不使用 Worklight 的情况下也尝试相同的方法,看看它是否仍在发生。将有助于减少可能的原因。 您是使用自定义的 JQuery 版本还是依赖 WL 提供的版本? @IdanAdar 我将如何删除 WL?只需删除从 worklight/? 引用的所有文件? 您可以使用 jQM 将应用程序重新创建为纯 Web 应用程序(只是 UI ...)。通过删除 Worklight 引用,我不确定如何加载应用程序。 @AAhad 这是带有所有装饰的常规 jQM(自定义主题除外) 【参考方案1】:这是一个初步的答案。我仍在做一些跑腿工作,并试图看看在这种情况下到底发生了什么。
罪魁祸首似乎是一个特定的面板。一个我几周都没碰过的面板。我唯一能想到的就是我将.ui-tabs-panel
上的 padding-top 从 1em 更改为 0.5em...
有两个面板会在应用加载时立即启动。从右边滑出的那个是罪魁祸首:如果我删除了 init 调用和它的 html,应用程序就可以了。把它全部放回去,并通过 weinre 过早地打开面板解决了这个问题。下一步,将 padding-top
改回 1em。
问题没有出现。我重复了几次:用 0.5em 填充构建一个构建,另一个用 1em 填充。重复。 0.5em 版本总是有问题,另一个没有。
我将把它归结为有史以来最巧合(阅读:不幸)的错误。
我计划将面板内容硬编码为display:none
,并在面板打开时显示它们。看看这是否有效。
【讨论】:
很高兴知道这一点。正如我已经指出的那样,这将是 JQuery 甚至 CSS 问题,而与 WL 无关。所以它的 CSS 问题。以上是关于Android 上的 jQM + WL - 横向 CPU 高的主要内容,如果未能解决你的问题,请参考以下文章
JQM - 页面上的 data-dom-cache="true" 未加载 js 文件