2010-07-29 129 views
0

我需要在数据库操作期间向用户显示一个活动指示器,这需要几秒钟的时间。访问数据库时的异步数据库调用/ ActivityIndi​​cator

我有UIActivityIndi​​cator配置和工作,但是当我调用[myActivity startAnimating];下一次调用是做数据库操作,它永远不会显示我的活动。

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

感谢您的任何相关信息。

回答

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/Threading上阅读更多信息)