当应用程序进入后台状态时,我需要在后台安排任务。 我必须这样做才能每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选择器中,put不工作。
也许我的方法不是最好的方法。如果你有任何其他黑客来做这个操作,就像我描述的那样,我会接受它。
谢谢。
答案 0 :(得分:2)
您没有启动该线程,它的初始化代码位于到期处理程序块中,该块将在应用程序关闭并超时之前调用:
在应用程序剩余之前不久调用的处理程序 后台时间达到0.您应该使用此处理程序来清理和 标记后台任务的结束。未能结束任务 明确地将导致应用程序的终止。该 在主线程上同步调用handler,从而阻塞了 应用程序暂时暂停应用程序 通知。
如果您的应用不支持其中一种后台模式(gps,音频,voip),则该任务应仅激活10分钟(由iOS驱动)。
如果用户将应用程序带到前台或任务时间结束(当调用处理程序块时),您还需要保留返回的UIBackgroundTaskIdentifier
引用以将其标记为已结束