我需要在数据库操作期间向用户显示一个活动指示器,需要几秒钟。
我已经配置并运行了UIActivityIndicator,但是当我调用[myActivity startAnimating]时;下一个调用是进行数据库操作,它从不向我显示活动。
我认为这可以通过异步访问数据库来解决,但我不知道如何做到这一点。
感谢任何相关信息。
答案 0 :(得分:1)
执行数据库查询时,主UI可能会冻结,因此冻结动画。
如何在后台线程中运行数据库操作:
[myActivity startAnimating];
[self performSelectorInBackground:@selector(someMethod) withObject:nil];
-(void)someMethod {
// do something in the background here.
// long running task
[myActivity performSelectorOnMainThread:@selector(stopAnimating) withObject:nil];
}
有一点需要注意,如果您在后台线程上使用Core Data来更新日期,则必须同步它们,以便更改显示在主线程上(有关更多信息,请阅读Core Data / Threading)