访问数据库时的异步数据库调用/ ActivityIndi​​cator

时间:2010-07-29 22:49:40

标签: iphone objective-c

我需要在数据库操作期间向用户显示一个活动指示器,需要几秒钟。

我已经配置并运行了UIActivityIndi​​cator,但是当我调用[myActivity startAnimating]时;下一个调用是进行数据库操作,它从不向我显示活动。

我认为这可以通过异步访问数据库来解决,但我不知道如何做到这一点。

感谢任何相关信息。

1 个答案:

答案 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)