在后台安排LocalNotifications时应用冻结

问题描述 投票:1回答:2
- (void)applicationDidEnterBackground:(UIApplication *)application
{
    for (int i =0; i<30; i++){
       //add a local notification and schedule it
    }
}

当应用程序切换到后台时,这些代码会在一段时间内冻结应用程序。

objective-c ios background uilocalnotification
2个回答
1
投票

没有任何文档说明UIApplication是否线程安全。经过长时间的测试,我发现大多数时间执行 LocalNotification 但有时会使我们的应用程序崩溃。

因此,似乎所有前缀为 "UI "的类都不是线程安全的,你不应该在另一个线程上调用这些方法。

我的解决方案是减少 LocalNotification虽说是这样,但还是会让应用程序有点冻结,不过我们觉得可以接受这个小冻结。


1
投票

默认情况下,当应用程序进入后台时,应用程序的处理就会冻结。当应用程序回到前台时,会从离开的那条语句继续执行。如果要在后台执行代码,你必须将其包围在 beginBackgroundTaskWithExpirationHandler 块。

请看一下这部分 在后台完成一个有限长度的任务。http:/developer.apple.comlibraryios#documentationiphoneconceptualiphoneosprogrammingguideBackgroundExecutionBackgroundExecution.html。.

© www.soinside.com 2019 - 2024. All rights reserved.