0

当我按下主页按钮时,我的应用程序的时间分析器

我在我的中设置了“应用程序不在后台运行” info.plist,所以当用户点击主页按钮时,应用程序退出。

当我 [UIApplication -appWillTerminate:]打电话时,我会安排 64 个本地通知到系统,所有这些都是非重复的。

但这在装有 iOS6.0.1 的 iPhone4 上似乎需要很长时间(6.17 秒)。当我查看时间分析器时,我发现曲线很奇怪,它不会占用太多 CPU 时间,但确实需要很多时间。

此外,当我查看调用树时,93% 的时间都花在[UIApplication -scheduleLocalNotification:]了图像中显示的时间范围内。为什么?

这就是我生成通知的方式:

UILocalNotification *n = [[[UILocalNotification] alloc] init] autorelease];
n.alertBody = @"some body";
n.hasAction = YES;
n.alertAction = @"some action";
n.fireDate = @"some date";
n.repeatInterval = 0;
n.soundName = @"my sound"
n.userInfo = aDictionaryWithAStringAbount10CharacterLongAnd2NSNumber.
[self.notifications addObject:n];

这是我安排通知的方式:

-(void)endProxyAndWriteToSystemLocalNotification
{
        _proxying = NO;
        NSDate *dateAnchor = [NSDate date];

        NSEnumerator *enumerator = [self.notifications objectEnumerator];
        NSInteger i = 0;
        while (i < maxLocalNotifCount) {
            UILocalNotification *n = [enumerator nextObject];
            if (!d) {
                break;
            }

            if ([n.fireDate timeIntervalSinceDate:dateAnchor] >= 0) {
                [[UIApplication sharedApplication] scheduleLocalNotification:n];
                i++;
            }
        }

        [self.notificationDatas removeAllObjects];

}
4

2 回答 2

5

这将有助于:

-(void)endProxyAndWriteToSystemLocalNotification {

    [[UIApplication sharedApplication] setScheduledLocalNotifications:self.notifications];
}

iOS 4.2 及更高版本

阅读 UIApplication 类参考以获得详细描述

于 2013-07-24T13:01:42.380 回答
0

我认为问题在于您正在尝试安排 64 个本地通知。是否有理由在应用程序终止时执行所有这些操作?苹果的 scheduleLocalNotification 没有被设计为在终止时被调用这么多次

于 2013-01-10T02:50:13.193 回答