【问题标题】:Android app becomes unresponsive to touchAndroid 应用程序对触摸无响应
【发布时间】:2013-03-10 16:05:03
【问题描述】:

我有一个使用 Sencha Touch 和 phonegap 开发的应用程序。有一次,它会从服务器下载数据,一旦收到成功的响应,就会显示下一个屏幕。我发现,当将其捆绑为 iOS 应用程序时,它会转换到下一个屏幕,但不显示任何内容,报告内存不足。所以我简化了下一个屏幕的布局(DOM 结构非常复杂),它现在可以在 iOS 模拟器和我的 iPhone 上运行。

但是,在 Android 中,我可以从 console.log 语句的输出中看到它成功检索数据并触发事件以显示下一个屏幕。然后它会在显示该屏幕之前停留很长时间,即使我的 console.log 语句显示该屏幕的“绘制”事件已被触发。

最终,屏幕确实出现了,但屏幕上的所有控件都对触摸没有响应。我是否可能需要进一步简化该屏幕的结构?由于iOS版本在我简化页面结构之前收到了内存不足的警告,我怀疑Android版本可能有类似的问题,但我不知道如何监控内存使用情况。在 Android 版本中,在屏幕最终显示之前不久,我在 logcat 中看到以下内容:

UpdateFrameCache: pending style recalc, ignoring

在无响应的屏幕上,当我点击一些(但不是全部)无响应的控件时,我看到:

Got ACTION_DOWN but still waiting on stale event. Catching up.

最终,应用程序将自行关闭:

Fatal signal 11 (SIGSEGV) at 0xbbbadbeef (code = 1)

感谢您的帮助。

【问题讨论】:

    标签: android cordova extjs touch


    【解决方案1】:

    如果您在 UI 线程中执行密集计算,它可能会解释为什么需要这么长时间。 如果您有一些背景计算要做,请尝试使用AsyncTaskService。完成后,在 UI 线程中更新界面。

    戈达克

    【讨论】:

    • 谢谢你,戈达克。使用 Sencha Touch 开发应用程序并在 Google Chrome 中预览,在我看来这是一个非常轻量级的 UI,但看起来你是对的。 AsyncTask 看起来很到位。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多