【发布时间】:2015-12-03 11:55:09
【问题描述】:
我正在对应用程序进行性能分析,因为某些部分非常慢,例如数据库查询需要 0.310 秒。如果我在主线程中执行此操作,则 UI 中断非常明显,应用程序感觉没有响应。
但是你应该中断应用程序的最长时间是多少,什么是可以接受的?
我想让它尽可能快,但也不想着迷并花费数小时的工作来将时间缩短到几毫秒。
【问题讨论】:
标签: android ios performance user-interface
我正在对应用程序进行性能分析,因为某些部分非常慢,例如数据库查询需要 0.310 秒。如果我在主线程中执行此操作,则 UI 中断非常明显,应用程序感觉没有响应。
但是你应该中断应用程序的最长时间是多少,什么是可以接受的?
我想让它尽可能快,但也不想着迷并花费数小时的工作来将时间缩短到几毫秒。
【问题讨论】:
标签: android ios performance user-interface
在iOS 的情况下,UI 以 60fps 的速度呈现,因此理想的最长时间为 1/60 秒,这样 UI 就不会跳过一帧。您可以从您想要达到的最低 fps 计算出您需要的性能。
无论如何,请充分利用所有可用的工具,例如 XCode 的 Time Profiler。等等。从最慢的代码块开始,然后继续往上走。
【讨论】:
但是你应该中断应用程序的最长时间是多少,什么是可以接受的?
没有这样定义的接受程度,这完全取决于您可以提供的用户体验有多好。有后台线程/NSOperationQueue/GCD。仅当它是 UI 级别的操作时,才使用主线程。
【讨论】:
Android 会显示触发器 ANR
通常,如果应用程序无法响应用户输入,系统会显示 ANR。例如,如果应用程序阻塞了 UI 线程上的某些 I/O 操作(通常是网络访问),因此系统无法处理传入的用户输入事件。
见链接ANR
【讨论】: