应用程序崩溃,错误AppName [5811]被锁定的系统文件暂停:AddressBook.sqlitedb“

时间:2012-04-09 05:28:51

标签: iphone sqlite background addressbook tel

我在我的应用中使用AddressBook。我在后台线程中获取地址簿数据。如果我从后台打开我的应用程序,我的应用程序崩溃并出现以下错误:

    Application Specific Information:
[2786] was suspended with locked system files: 
/private/var/mobile/Library/AddressBook/AddressBook.sqlitedb

我的应用从后台启动后,当我的应用收到UIApplicationDidBecomeActiveNotification时,我在后台线程中获取地址簿数据。这是我的代码

    // In my ViewController.m

- (void)viewDidLoad
{
    [[NSNotificationCenter defaultCenter] addObserver:self
                                          selector:@selector(appLaunchedFromBackground:)
                                          name:UIApplicationDidBecomeActiveNotification object:nil];
    // Some more code
}

-(void)appLaunchedFromBackground:(NSNotification *) notification  {

    NSLog(@"In appLaunchedFromBackground");
    [self performSelectorInBackground:@selector(getUpdatedAddressBookData) withObject:nil];
}

-(void)getUpdatedAddressBookData {

    NSLog(@"In %s",__PRETTY_FUNCTION__);

    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    AddressBook *addBook = [[AddressBook alloc]init];
    [addBook fetchAddressBookDataInBackground];
    [addBook release];
    [pool drain];
}

我的应用程序中也有CALL功能。如果我打电话给我的应用程序&在CALL结束后,我再次启动我的应用程序2次我的应用程序崩溃。对于CALL,我使用了以下代码:

 +(void)makeCallToSelectedContact:(NSString*)phoneNo{

    NSMutableString *phoneNumber = [NSMutableString stringWithString:phoneNo];

    [phoneNumber replaceOccurrencesOfString:@" " 
                                 withString:@"" 
                                    options:NSLiteralSearch 
                                      range:NSMakeRange(0, [phoneNumber length])];
    [phoneNumber replaceOccurrencesOfString:@"(" 
                                 withString:@"" 
                                    options:NSLiteralSearch 
                                      range:NSMakeRange(0, [phoneNumber length])];
    [phoneNumber replaceOccurrencesOfString:@")" 
                                 withString:@"" 
                                    options:NSLiteralSearch 
                                      range:NSMakeRange(0, [phoneNumber length])];

    NSLog(@"phoneNumber => %@",phoneNumber);
    if([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:[NSString stringWithFormat:@"tel:%@",phoneNumber]]]) {
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"tel:%@",phoneNumber]]];
    }
    else {
        NSLog(@"Unable to open");
        [self showAlertWithTitle:@"Alert" andMessage:@"This Device Doesn't Support Call Functionality"]; 
    }
}

如何解决崩溃问题?任何形式的帮助都非常感谢。感谢。

1 个答案:

答案 0 :(得分:0)

到目前为止,我发现这似乎是iOS 6的新手。

当您在发送到后台后继续访问Addressbook时,跳板似乎会终止您的应用。当您继续在后台运行以上传某些文件时,可能会发生这种情况。

这个问题也可能在6.1中消失了。日语和中文键盘存在类似问题,它使用自动完成功能访问全局数据库。这个问题在6.1中得到了肯定,你的问题也很有可能。