gpt4 book ai didi

iOS:当应用程序状态为 UIApplicationStateBackground 时,为什么 dispatch_async 不会运行到主线程?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:32:37 26 4
gpt4 key购买 nike

我最近在做一个涉及在后台获取数据的项目,我注意到分派(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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com