0

我面临以下问题: - 有一个计算是在加载应用程序期间计算复杂的数学运算,它需要相当长的时间(大约 20 秒),此时 CPU 几乎 100% 使用,应用程序看起来像被冻结了。由于它是一个移动应用程序,因此必须防止这种情况发生,即使有延长初始加载时间的成本,但由于它位于第 3 方库中,因此无法直接访问计算代码。

  • 有没有办法阻止大部分 CPU 的 AIR 应用程序?
4

1 回答 1

3

在桌面上,您将使用 Workers API。它很新,我推荐它用于仅限 AS3 的项目。如果你使用 flex,最好等几个月。Workers 是一个多线程 API,它允许你创建一个 UI 和一个工作线程。这仍将使用 100% 的 CPU,但 UI 不会卡住。这里有一些链接可以帮助您入门: Thibault Imbert - 先睹为快介绍 as 3 workersAS3 Workers livedocs

但是,在 Mobile 上,您不能使用工作人员,因此您必须将您的功能分开,并在那里插入一些延迟,例如 callLater 或 setTimeout。很难编写这样的函数,但如果它有一个循环,您可以在每次 x 迭代后插入一个 callLater 方法。您可以对 x 和 callLater 函数的延迟进行参数化,以实现完美的解决方案。调用 callLater 后,将渲染 UI,生成并捕获事件。如果您不需要它们,请删除它们的侦听器,或使用更高优先级的处理程序停止它们的传播。如果您需要,我可以在循环中发布一些 callLater 的源示例。

于 2012-12-08T02:05:44.037 回答