Objective c 在ios 7.1和ios 8.0中运行时,应用程序在睡眠模式下崩溃
当应用程序处于睡眠模式时,我正在检查xcode中的日志。我正在使用基于voip的应用程序。我已经办理了有关voip的所有手续。我可以让应用程序保持睡眠模式超过20分钟。但在我断开设备和系统的连接后,我已经在睡眠模式下运行了应用程序。在3-4分钟内,应用程序崩溃。我已签入设备日志。 它看起来像Objective c 在ios 7.1和ios 8.0中运行时,应用程序在睡眠模式下崩溃,objective-c,crash,ios8,voip,pjsip,Objective C,Crash,Ios8,Voip,Pjsip,当应用程序处于睡眠模式时,我正在检查xcode中的日志。我正在使用基于voip的应用程序。我已经办理了有关voip的所有手续。我可以让应用程序保持睡眠模式超过20分钟。但在我断开设备和系统的连接后,我已经在睡眠模式下运行了应用程序。在3-4分钟内,应用程序崩溃。我已签入设备日志。 它看起来像 id:xxx xxx xx。。。姓名:由 SwyxOTT,来自-[应用程序输入背景状态]流程: permittedBackgroundDuration:180.000000原因:finishTask所有者
[self performSelectorOnMainThread:@selector(keepAlive) withObject:nil waitUntilDone:YES];
[[UIApplication sharedApplication] setKeepAliveTimeout:KEEP_ALIVE_INTERVAL handler: ^{
[self performSelectorOnMainThread:@selector(keepAlive) withObject:nil waitUntilDone:YES];
}];
有人知道这个问题吗?请告诉我。试试这个
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[UIApplication sharedApplication].idleTimerDisabled=YES;
}
此崩溃是调用
-beginBackgroundTaskWithExpirationHandler:
而没有匹配的-endBackgroundTask:
的结果。至少,您应该在过期处理程序中结束后台任务,如下所示:
__block UIBackgroundTaskIdentifier backgroundTaskID = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
[[UIApplication sharedApplication] endBackgroundTask:backgroundTaskID];
backgroundTaskID = UIBackgroundTaskInvalid;
}];
资料来源:
应禁用空闲计时器的唯一应用程序是映射应用程序、游戏或程序,在这些应用程序中,当用户交互最少时,应用程序需要继续显示内容。