UILocalNotification安排本地通知稍有延迟?

3
UIApplication单例上调用scheduleLocalNotification:后,我注意到在某些情况下,scheduledLocalNotifications返回的通知数组实际上不包括刚刚预定的通知。直到现在,或者说我没有意识到这是一个问题。一直都认为本地通知在预定后立即可用。
我们应该假设本地通知的预定发生在某个后台线程上,而不期望它们在预定后立即可见吗?
因为我根据那个通知是否存在来更新我的用户界面...
有人能找到关于这个的官方说法吗?我没有找到任何讨论。

检查设备。延迟主要在模拟器上。 - aBilal17
我总是在设备上进行开发。目前问题比较一致,但仍然不是100%(这很麻烦)。我怀疑当前一代设备速度如此之快,以至于我正在调度的当前线程会跳转到它们检查预定数组的位置,而怀疑的后台线程无法完成调度。如果我在调度和数组检查之间输入一些调试日志,则问题大多会消失-调试日志可能足够延迟其他线程足够的毫秒数来完成调度。或者什么的。 - Jonny
1个回答

0

来自文档:scheduleLocalNotification: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplication_Class/#//apple_ref/occ/instp/UIApplication/scheduledLocalNotifications

当需要安排大量通知时,使用此方法可能比使用 scheduleLocalNotification: 更快。

scheduledLocalNotifications 可以直接赋值,文档中也指出它比 scheduleLocalNotification: 更快。我理解后者的方法可能会很慢。

你应该尝试直接使用 scheduledLocalNotifications


那么他们隐含地意味着scheduleLocalNotification:可能会吗?无论如何,我只安排了一个...但仍然看到这种滞后,或者是其他什么。我将尝试直接分配给数组。我想应该安全地从任何现有内容创建可变数组,然后添加到该数组中。 - Jonny
我尝试了一下,虽然对于许多通知来说可能会更快(我只使用了一个,无法确定),但它并没有改变。如果我检查数组计数(我刚刚设置!),它是0(!)。这必须意味着操作系统在后台进行了一些“缓慢”的处理,时间有点长... - Jonny
我知道在“触发”通知时有一些优化措施,以保护电池寿命:系统可以稍微延迟某些通知,以便将它们与其他通知或事件分组,以便只唤醒处理器一次而不是多次。但是当“调度”通知时,我不知道是否有这样的优化。 - Nicolas Buquet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接