首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有没有办法强制核心动画运行它的线程?

有没有办法强制核心动画运行它的线程?
EN

Stack Overflow用户
提问于 2009-10-24 01:38:25
回答 3查看 3K关注 0票数 5

Core Animation使用后台线程来完成它的工作。现在的问题是:我在主线程中进行了大量的计算。核心动画会立即冻结,直到计算完成。然后它继续完成它的动画。我记得在一个文档中读到,CA在处理时间上具有低优先级,这意味着主线程想要做的任何事情都是高优先级的,并且比任何花哨的动画更有可能同时完成。

我想强制核心动画在任何情况下都能很好地安排它的后台线程和主线程。或者可选地,一个单独的线程将在主线程之外运行繁重的计算。我已经试过了,但CA仍然会冻结,直到它完成。我希望调度程序能够在CA和该计算之间快速切换处理时间。

怎么能强迫CA继续工作呢?如果事情进行得比慢一点,那也没问题。但最重要的是,从用户的角度来看,一切都在继续。

EN

Stack Overflow用户

回答已采纳

发布于 2009-10-24 02:21:04

不要在主线程上运行繁重的计算,因为它们会阻塞UI并导致糟糕的用户体验。在后台线程中运行它们。

也就是说,iPhone是一个单核系统,因此,如果计算将CPU锁定在一个线程中,那么其他线程的性能可能会接近停顿。如果可以,请尝试将计算分解为较小的元素,并在NSOperationQueue中作为NSOperations运行它们。如果您确保计算分段不会太小,以至于为它们创建NSOperation的开销变得太大,这可能会提供一种稍微限制计算的方法,以便您的动画不会被减慢。

核心动画倾向于在动画可能运行之前执行大量计算,因此这些计算可能会被繁重的计算线程减慢。也可以在CAAnimation的-animationDidStart: delegate方法中开始繁重的计算,使计算仅在动画进行时开始。我相信动画的进展比它的开始使用更少的计算,所以它可能更能与你繁重的计算共存。

票数 5
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1614921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档