我的活动指标运行正常。大多数时候。但有时它会继续下去。代码非常普遍,所以我将不得不解释。
我在做计算。有时它只需要更新,所以它很快。有时它很长,可能需要从服务器获取新数据。当计算需要一些时间时,活动指示器起作用。但是,当它很快时,活动指示器将启动,但不会停止。是否有最短的动画时间?有没有其他人遇到这个?
我会根据上次计算完成时尝试编写一些东西以启动startAnimation。有什么建议吗?
更新:好的。它'解决了。记录(如建议的那样)确实显示有对startAnimating
的第二次调用,导致竞争条件:有时计算时间足以使两个呼叫在停止之前到达。我现在已经取消了第二个电话,它正在工作!!
答案 0 :(得分:4)
您确定从主线程中调用了stopAnimating
吗?必须在主线程上进行UI的更改。否则你将一无所获,奇怪的行为或延迟。
在调用stopAnimating之前放置类似NSLog的东西以确保它完全被调用并从主线程调用。
NSLog(@"main thread? %@", [NSThread isMainThread] ? @"YES" : @"NO!");
从另一个线程执行UI更新通常是意外结果的原因,特别是对于UIActivityIndicatorViews,因为它们通常与线程一起使用。
答案 1 :(得分:2)
我的猜测是您在endAnimation
之前致电startAnimation
或根本不致电NSLog
。这些是导致此类问题的最常见原因......
当调用这两种方法时,你试过{{1}}吗?
答案 2 :(得分:1)
对于这些情况,我喜欢建立一种参考计数活动指标。基本上每次在网络上执行某些操作时,都会增加网络活动计数。然后当它完成你减少。如果它达到0,你就停止它。如果它高于0,则启动它。