钛 SDK 从 7 迁移到 8 应用流程就像框架一样



我有在钛合金上运行的应用程序 7.5.1.GA

当我尝试更新到 8.0.0.GA 该应用程序已在iOS上启动并运行时

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

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

注意:在主线程上运行 = 假....我读到它在 SDK 8 中默认强制为"true"....但是解决方案是什么.....我的应用程序非常大,我该怎么办?我应该重构所有....我对钛中的"主线程运行"了解不多。

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

但是,这只能说明您的应用程序的优化程度有多差,并且在运行时可能会消耗大量电池。您需要优化应用程序的呈现,并且只执行所需的操作。你的应用程序中有什么样的业务逻辑,手机表现得如此糟糕?感觉有很多事情可以更好,很多事情可以简化。

您可以做的几件事:

选项卡
  • 组:仅呈现可见的选项卡
  • 分页:不要在列表中呈现超过 20-30 个项目,添加动态分页并仅呈现部分项目
  • 繁重的计算:尽量避免它们,或者存储结果,以便您只做一次。在这种情况下,也可以实现重构,因为很多时候编程中的计算可以通过多种方式实现,其中一些比其他更简单的结果要重得多。
  • 避免重新渲染。如果您逐个将项目添加到列表中,而不是一次全部添加,则界面要轻得多
  • 补充一点,如果您使用 Alloy 数据绑定,这种重新渲染(一次一个项目(是指数级的糟糕!

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

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

最新更新