0

我正在使用CLLocationManagerCLLocationManagerDelegate找出用户位置坐标。我想确保我先得到我的坐标,然后再恢复其余的代码。我怎么能锁定我的代码以获取位置坐标然后恢复。

有什么想法或建议吗?

4

1 回答 1

4

不。哪个用户会想要一个在获取位置修复时冻结的应用程序?这可能需要几分钟,如果您的应用在几秒钟内没有响应,它将被删除。相反,您应该在您的应用程序启动后立即打开位置管理器并等待代理的回调来执行下一步。在该回调返回之前,用户应该能够执行任何非位置类型的活动,例如查看关于屏幕或更改设置。如果您没有其中任何一个,并且您真的希望用户在修复之前无法做任何事情,请用 UIView 覆盖屏幕并放置 UIProgressIndicator(无限旋转类型而不是有限条类型)中间有一条消息说它正在等待位置数据。另请记住,某些用户可能不会授予您的应用位置权限,

等待修复时不只是阻塞的另一个原因是,当有电话打进来或用户出于某种原因切换到另一个应用程序时,您的应用程序可能会被推到后台。如果您的应用程序此时卡在一个紧密的循环中并且太忙而无法响应进入后台的请求,则操作系统将完全终止该操作,并且用户在返回时必须完全重新启动应用程序。所有进展和变化都将丢失。所以总而言之,不要考虑阻塞应用程序的主线程。

于 2012-11-05T02:18:45.723 回答