【问题标题】:How long has my iOS application been running on main thread?我的 iOS 应用程序在主线程上运行了多长时间?
【发布时间】:2018-10-01 06:21:21
【问题描述】:

我是并发新手,并试图了解如何让我的应用程序性能更好。我想弄清楚是否有办法让我找出我的应用在 主线程 上运行/执行操作的时间。

如果我想让我的应用程序性能更好,这就是解决方法吗?提前致谢。

【问题讨论】:

  • 请记住“过早的优化是万恶之源”(Donand Knuth)
  • 是时候熟悉“乐器”了

标签: ios swift memory-management concurrency analytics


【解决方案1】:

iOS 中的并发需要考虑的几件事。

  • 你所有与UI/ UIApplication相关的任务都将在Main thread中执行, 你不应该在任何辅助线程中执行你的 UI 任务。
  • 如果您有任何长时间运行的任务,例如服务器连接和 下载数据处理数据或任何业务逻辑 与 UI 无关的计算应该以不同的方式执行 线程。

当您的应用启动时,系统会为您创建主运行循环和主线程,默认情况下所有任务都在主线程上运行。因此,正如我在上面列出的,您可以使用GCDNSOperationQueue 创建辅助线程来执行与UI 无关的长时间运行的任务。因为如果你不为长时间运行的任务创建辅助线程并且只在Main thread 上运行它,那么你的 UI 会一直卡住直到任务结束,这显然不是一个好的用户体验。

要了解 GCD 和 NSOperationQueue,请查看此链接:https://www.raywenderlich.com/817-updated-course-ios-concurrency-with-gcd-operations

【讨论】:

  • 所以目前我所有的 API 调用都在后台线程中完成。但我也在尝试找到一种方法来了解我的应用程序在主线程上运行了多长时间。
  • 从您启动应用的那一刻起,您的主线程就一直在运行,并且它处于前台和活动状态。
  • @Lazy 这是正确的答案,主线程一直在运行以处理 UI 事件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-08
相关资源
最近更新 更多