首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >0x8badf00d侦听后台获取位置后崩溃

0x8badf00d侦听后台获取位置后崩溃
EN

Stack Overflow用户
提问于 2017-10-09 21:15:01
回答 1查看 758关注 0票数 3

在我的ios应用程序中,当我接收到后台获取执行时,我开始在后台监听用户的位置更新(最多15分钟)。但是,在我停止更新之后,应用程序会出现0x8badf00d错误。

我已经启用了后台位置和后台获取权限,我还在CLLocationManager上启用了后台位置更新。

知道为什么会发生这个错误吗?

EN

回答 1

Stack Overflow用户

发布于 2017-10-09 22:25:34

问题不在于它没有在后台运行,而是它正在运行的东西阻塞了主线程。

0x8badf00d (“吃坏的食物”;lol)表示监视进程(监视死进程/被阻塞的进程)杀死了应用程序,通常是因为您做了一些事情来阻塞主线程。如果您避免阻塞主线程,则此错误将消失。请参阅技术注释2151:理解和分析应用程序崩溃报告和搜索0x8badf00d

如其所述:

异常代码0x8badf00d表示由于发生了看门狗超时,应用程序已被iOS终止。应用程序需要很长时间才能启动、终止或响应系统事件。造成这种情况的一个常见原因是做主线程上的同步网络。线程0上的任何操作都需要移动到后台线程,或者以不同的方式处理,这样它就不会阻塞主线程。

他们专注于同步网络请求,但是它可以是任何阻塞主线程太长时间的东西,无论是缓慢的同步进程还是死锁或其他什么。您应该查看线程0的堆栈跟踪,看看是否能够识别什么阻塞了主线程。不过,这里还不足以诊断它。

常见的原因包括同步网络调用、同步GCD调用、不适当地使用信号量、锁或调度组“等待”调用、死锁等。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46655106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档