Chi*_*nta 6 iphone multitasking ios
我使用iPhone应用聊天使用套接字连接与服务器通信.当应用程序移动到后台时,我可以看到服务器能够与应用程序通信大约5分钟.但在此之后,套接字连接被破坏.但是应用程序一移到后台就会停止执行.为什么套接字连接保持5分钟而不是应用程序执行.苹果指定连接将保持的确切时间.
小智 9
通过在applicationDidEnterBackground中使用以下代码,您可以获得600秒(10分钟)的最长时间:
if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)]) { //Check if our iOS version supports multitasking I.E iOS 4
if ([[UIDevice currentDevice] isMultitaskingSupported]) { //Check if device supports mulitasking
UIApplication *application = [UIApplication sharedApplication]; //Get the shared application instance
__block UIBackgroundTaskIdentifier background_task; //Create a task object
background_task = [application beginBackgroundTaskWithExpirationHandler: ^ {
[application endBackgroundTask: background_task]; //Tell the system that we are done with the tasks
background_task = UIBackgroundTaskInvalid; //Set the task to be invalid
//System will be shutting down the app at any point in time now
}];
//Background tasks require you to use asyncrous tasks
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//Perform your tasks that your application requires
NSLog(@"\n\nRunning in the background!\n\n");
[application endBackgroundTask: background_task]; //End the task so the system knows that you are done with what you need to perform
background_task = UIBackgroundTaskInvalid; //Invalidate the background_task
});
}
}
Run Code Online (Sandbox Code Playgroud)
我刚刚实现了backgroundTaskIdentifier对象并使background_task无效以检查时间,应用程序处于活动状态且运行600秒.您甚至可以使用此功能获得剩余时间
NSLog(@"Time remaining: %f", application.backgroundTimeRemaining);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7453 次 |
| 最近记录: |