当我将应用程序移动到背景并将其带回前台时,我遇到活动指示器冻结的问题。移动到后台时,应用程序可以通过网络加载一些数据。因此我向用户显示一个活动指示器。我已经添加了代码以确保任务在后台完成。 当应用程序立即进入前台并且数据未完全加载时,微调器保持在屏幕上但停止旋转。数据完全加载后,微调器消失。当应用程序移动到前台iOS4时,UIActivityIndicatorview冻结
任何想法为什么活动指标冻结,以及可能的解决方案。
谢谢。
当我将应用程序移动到背景并将其带回前台时,我遇到活动指示器冻结的问题。移动到后台时,应用程序可以通过网络加载一些数据。因此我向用户显示一个活动指示器。我已经添加了代码以确保任务在后台完成。 当应用程序立即进入前台并且数据未完全加载时,微调器保持在屏幕上但停止旋转。数据完全加载后,微调器消失。当应用程序移动到前台iOS4时,UIActivityIndicatorview冻结
任何想法为什么活动指标冻结,以及可能的解决方案。
谢谢。
在后台应用几乎没有理由更新其用户界面。
一个,谁在那里看到它?指标冻结的另一个原因是,去背景会停止用户界面更新和动画,这些更新和动画会不必要地消耗设备的电量并减慢前台应用的速度。
从Apple的优秀iPhone Application Programming Guide,应用程序委托方法-applicationWillEnterForeground:
在应用程序进入前台时被调用。
您可以覆盖此方法并添加逻辑来唤醒小部件。或者您订阅您的课程(视图控制器等)以听取UIApplicationWillEnterForegroundNotification
通知。如果你听这个通知,你可以调用一个选择器来更新UI的状态,因为当时应用程序正在做什么。
谢谢亚历克斯。还有一个问题 - 当应用程序确实到达前台时,它会使用获取的数据更新tableview并隐藏活动指示器。所以如果它唤醒UI,为什么它没有唤醒活动指示器动画?如果它在后台停止,它不应该在前景中恢复旋转吗? – 2010-07-15 19:56:21
当您的应用程序进入后台时,操作系统可能无法跟踪它停止的任何动画 - 它只是想停止这些UI更新。然后,您有责任在进入前台时更新UI的状态。表视图可能会被更新,因为你可能在'-viewDidAppear:'或类似的东西中有逻辑触发表视图来重新加载它的数据。 – 2010-07-15 20:00:27
我正试图通过调用activityActivity上的startAnimating来使applicationWillEnterForeground中的spinner再次生成动画。但它什么都不做。如果我检查isAnimating值,它显示TRUE。但是纺纱工仍然冻结。 – 2010-07-15 22:01:07