- (void)applicationDidEnterBackground:(UIApplication *)application
{
for (int i =0; i<30; i++){
//add a local notification and schedule it
}
}
当app切换到后台时,这些代码会在一段时间内冻结app。
答案 0 :(得分:1)
默认情况下,当应用程序进入后台时,应用程序处理会冻结。执行从应用程序返回前台时离开的同一语句继续执行。要在后台执行代码,您必须将其包围在beginBackgroundTaskWithExpirationHandler
块中。
在http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/BackgroundExecution/BackgroundExecution.html查看在背景中完成有限长度任务部分。
HTH,
阿克沙伊
答案 1 :(得分:1)
没有关于UIApplication的文件是否是线程安全的
经过长时间的测试后,我发现大部分时间在背景上执行LocalNotification
都很有效。但有时它只是崩溃我们的应用程序。
所以似乎所有带有'UI'前缀的类都不是线程安全的,你永远不应该在另一个线程上调用那些方法。
我的解决方案减少了LocalNotification
的数量,它仍然会冻结应用程序,但我们可以接受这种小冻结。