2
当应用程序进入后台状态时,我需要在后台安排任务。 我必须这样做才能每x次调用一次远程服务,然后在远程服务发生某些事件时显示本地通知。 (我知道这看起来像RPN,的确是这样,但由于某种原因,我无法使用PRM)当应用程序进入后台时运行后台线程
我试过这段代码:
- (void)applicationDidEnterBackground:(UIApplication *)application{
[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^(void){
remoteServiceCallThread = [[NSThread alloc] initWithTarget:self selector:@selector(doRemoteCall:) object:nil];
[remoteServiceCallThread start];
}];
}
- (void)applicationWillEnterForeground:(UIApplication *)application{
[remoteServiceCallThread cancel];
}
我把断点在doRemoteCall选择,把不管用。
也许我的方法不是最好的。如果你有任何其他手段像我描述的那样做这个操作,我会接受它。
谢谢。
谢谢你的解释。但是这并不能告诉我如何在应用程序不在前台时设计我的解决方案来运行后台进程。 –
把代码放在'beginBackgroundTaskWithExpirationHandler'后面,它会在应用程序通知系统需要处理后台操作时处理。 'beginBackgroundTaskWithExpirationHandler'可能在任何地方被调用,不仅在'applicationDidEnterBackground',这样你可以保护你的数据源操作不被终止。 –