- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我最近在做一个涉及在后台获取数据的项目,我注意到分派(dispatch)到主队列的 dispatch_async block 不会运行。
测试条件:- 应用程序具有后台获取和远程通知功能- 通过配置为通过 iPhone 6S Plus 上的后台获取启动的方案启动
示例代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"Won't run");
});
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
NSLog(@"I ran");
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"Won't run");
});
dispatch_sync(dispatch_get_main_queue(), ^{
NSLog(@"Won't run");
});
});
return YES;
}
问题:1)有谁知道这是为什么?我找不到任何文档。诚然,我可能找错了地方——到目前为止,我已经检查了关于 dispach_async 的 GCD 文档,并进行了一些繁重的网络搜索。2)有没有其他方法(最好是基于GCD)我可以在后台对主线程进行异步调用?
编辑:performSelectorOnMainThread:似乎也不起作用。
最佳答案
问题似乎是我没有在我的 AppDelegate 中包含委托(delegate)方法 application:performFetchWithCompletionHandler:。由于某种原因触发后台获取而没有此方法实现 block 分派(dispatch)到主线程。
关于iOS:当应用程序状态为 UIApplicationStateBackground 时,为什么 dispatch_async 不会运行到主线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39234379/
我正在登录(写入文件)backgroundTimeRemaining每次我的应用程序从挂起模式唤醒时的值,就在我使用过期处理程序开始 UIApplication 的后台任务之前,就像这样(在我发出网络
我最近在做一个涉及在后台获取数据的项目,我注意到分派(dispatch)到主队列的 dispatch_async block 不会运行。 测试条件:- 应用程序具有后台获取和远程通知功能- 通过配置为
我正在编写一个使用 GCD 定时器源的 Objective-C 包装器。目标之一是让包装器在应用程序进入后台时管理暂停计时器源。 docs对于 -[UIApplicationDelegate appl
我是一名优秀的程序员,十分优秀!