ApplicationDidEnterBackground不会触发方法
问题描述:
我试图将后台任务实现到我的应用程序。在我执行之前,我想给出一个简单的例子,如下所示。我只是把一个柜台,并希望看看它是否重要。但是,它不会激发我称为进程的方法。我不知道我错过了什么。ApplicationDidEnterBackground不会触发方法
- (void)applicationDidEnterBackground:(UIApplication *)application
{
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");
pollingTimer2 = [NSTimer scheduledTimerWithTimeInterval:0.1
target:self
selector:@selector(process)
userInfo:nil
repeats:YES];
[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
});
}
}
}
-(void) process
{
county= county+1;
NSLog(@"%d,county",county);
}
答
使用这些代码如下:
if ([[UIDevice currentDevice] isMultitaskingSupported])
{
//Check if device supports mulitasking
UIBackgroundTaskIdentifier bgTask;
UIApplication *app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:bgTask];
}];
pollingTimer2 = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(process) userInfo:nil repeats:YES];
}
其工作,并进行了测试。
注释掉endBackgroundTask并尝试 – 2013-05-03 21:25:55
你有没有把你的.plist文件中的应用程序在后台运行= YES? – 2013-05-04 02:06:11