UIActivityIndi​​cator问题 - 有时它不会停止

时间:2011-12-14 20:55:53

标签: iphone ios animation uiactivityindicatorview

我的活动指标运行正常。大多数时候。但有时它会继续下去。代码非常普遍,所以我将不得不解释。

我在做计算。有时它只需要更新,所以它很快。有时它很长,可能需要从服务器获取新数据。当计算需要一些时间时,活动指示器起作用。但是,当它很快时,活动指示器将启动,但不会停止。是否有最短的动画时间?有没有其他人遇到这个?

我会根据上次计算完成时尝试编写一些东西以启动startAnimation。有什么建议吗?

更新:好的。它'解决了。记录(如建议的那样)确实显示有对startAnimating的第二次调用,导致竞争条件:有时计算时间足以使两个呼叫在停止之前到达。我现在已经取消了第二个电话,它正在工作!!

3 个答案:

答案 0 :(得分:4)

您确定从主线程中调用了stopAnimating吗?必须在主线程上进行UI的更改。否则你将一无所获,奇怪的行为或延迟。

在调用stopAnimating之前放置类似NSLog的东西以确保它完全被调用并从主线程调用。

NSLog(@"main thread? %@", [NSThread isMainThread] ? @"YES" : @"NO!");

从另一个线程执行UI更新通常是意外结果的原因,特别是对于UIActivityIndi​​catorViews,因为它们通常与线程一起使用。

答案 1 :(得分:2)

我的猜测是您在endAnimation之前致电startAnimation或根本不致电NSLog。这些是导致此类问题的最常见原因......

当调用这两种方法时,你试过{{1}}吗?

答案 2 :(得分:1)

对于这些情况,我喜欢建立一种参考计数活动指标。基本上每次在网络上执行某些操作时,都会增加网络活动计数。然后当它完成你减少。如果它达到0,你就停止它。如果它高于0,则启动它。