【发布时间】:2016-12-04 16:36:10
【问题描述】:
如果我使用 TabBarController,并且当我从 VC1 切换到 VC2 时,我的两个 ViewContoller 访问 GPS (LocationManager),VC1 是否在后台运行(LocationManager 是否处于活动状态)?如果是这样,是否由同时运行 VC2(可见)LocationManager 引起的任何问题?
【问题讨论】:
-
只要你的
tabbarcontroller有记忆,是的,你所有的viewcontrollers都会活着。您可以启动服务并在屏幕上显示另一个 vc 时获取更新。 -
好的,太好了!谢谢你。那么我可以推断,同时运行两者不会产生任何不利影响?
-
不,他们没有。
-
您的问题具有误导性。短语“在后台运行”意味着在后台线程上运行。这与视图控制器不是最前面的视图控制器时工作不同。是的,如果您有一个视图控制器创建位置管理器的实例并开始位置更新,即使您在其上推送另一个视图控制器,它也会获得这些更新。但是,这些位置更新方法将在主线程上调用,而不是在后台线程上。
-
正如马特在回答中所说,您应该阻止位置管理器将更新发送到不在最前面的视图控制器。如果您需要进行全局位置跟踪,那么您可能希望创建自己的单例来订阅位置更新,并让 它 在该视图控制器需要更新时通知前视图控制器。
标签: ios background locationmanager multiple-instances tabbarcontroller