我有一个视图控制器,我在其中启动两个任务。一个用于获取位置更新,另一个用于获取加速度计和陀螺仪传感器数据更新。我已经将这两个的内部工作原理分离到两个单独的类中,并通过委托从视图控制器检索数据。
我面临一个问题。比如说,我在视图控制器中启动位置和运动传感器数据的获取,然后离开所述视图控制器。这反过来又会破坏在那里创建的对象,当我返回视图控制器时,它全部重置。
我希望这些启动的操作即使在我离开视图控制器时也能保持活动状态。坚持到我回来。我该如何处理这样的情况?
有几种方法可以做到这一点。您可以将执行这些功能的类设置为永远不会被销毁的单例,并且您的任何类都可以访问。另一种选择(IMO(不太好,是将对象从第一个视图控制器传递到第二个视图控制器。
Singleton 可能是这方面的解决方案。检查此帖子这样,只要您启动管理器,无论视图控制器状态如何,它都将保持活动状态。
从第二个视图控制器返回时,不应启动第一个视图控制器(启动位置和运动传感器数据的位置(。这可以通过两种方式完成。
- 一种是使用导航控制器推动您的第二个视图控制器并返回
- 从现有视图控制器中呈现第二视图控制器,并在返回时关闭第二视图控制器
其他方式:(如果实例化您的第一个视图控制器(
在appdelegate中全局声明位置和运动传感器数据变量,并在第一个视图控制器中为它们分配值。执行这些操作后,您可以在任何地方使用这些值。