Titanium SDK 从 7 迁移到 8 应用程序流程就像框架

Titanium SDK migration from 7 to 8 the app flow is like frames

我有 运行s 在钛 7.5 上的应用程序。1.GA

当我尝试更新到 8.0 时。0.GA 应用已启动并且 运行正在 iOS

但是在应用程序中导航时,它像框架一样工作...(特别是如果我打开一个 window,其中包含大量代码或昂贵的数据处理或自调用循环...等)。 . UI 冻结直到代码执行完成然后它渲染所有 UI 就像 "POFF"

现在的问题是我不知道会发生什么......并且性能在 SDK 7.5 上 100% 正常工作。1.GA

注意:运行-on-main-thread = false ....我读到它在 SDK 8 中默认强制为 "true" ....但解决方案是什么.....我的应用程序很大我该怎么办?我应该重构所有....我对钛中的 "run-on-main-thread" 了解不多。

run-on-main-thread 意味着您的业务逻辑将 运行 与 UI 在同一线程上。您看到 SDK 8 性能不佳的原因是因为这是现在唯一的选择。所以没办法。

但是,这只能说明您的应用优化得有多糟糕,并且可能会在 运行 运行时耗尽大量电量。您需要优化应用程序的渲染,并且只做那些需要的事情。 phone 执行如此糟糕的应用程序中有什么样的业务逻辑?感觉还有很多可以改进的地方,还有很多可以简化的地方。

您可以做几件事:

  • tabgroups:仅呈现可见的选项卡
  • 分页:不要在列表中呈现超过 20-30 个项目,添加动态分页并仅呈现部分项目
  • 繁重的计算:尽量避免它们,或者存储结果,这样你只需要做一次。在这种情况下也可以实现重构,因为很多时候编程中的计算可以通过多种方式实现,其中一些比其他更简单的结果要重得多。
  • 避免re-rendering。如果您将项目 one-by-one 添加到列表而不是一次添加所有项目,您的界面会轻得多
  • 补充一点,如果你使用Alloy data-binding,这个re-rendering(一次一个)是指数级的坏!

您可以进行更多优化以使其变得更好。如果你编程得好,你根本不会注意到任何滞后。我有 10.000 个项目的列表,其中每个项目都需要计算(lat/lng 距离计算、标题重新格式化和 momentjs 映射),我仍然能够在半秒内渲染它。当然,然后我把它减回了大约 100 个项目,因为 10k 无论如何都没有用。

除此之外,如果不实际查看您的代码,我无法进一步帮助您。