【发布时间】:2012-06-17 03:22:07
【问题描述】:
我正在制作一个应用程序,它需要每次都跟踪用户的位置。它也可以在后台模式下工作。问题是当我多次使用其他应用程序时。其他应用程序可能会导致大量内存。我的应用程序有时会被系统终止。没有崩溃日志。所以我想知道一些原因。有什么办法可以避免我的应用程序被终止?非常感谢您的帮助。
【问题讨论】:
标签: iphone ios background location terminate
我正在制作一个应用程序,它需要每次都跟踪用户的位置。它也可以在后台模式下工作。问题是当我多次使用其他应用程序时。其他应用程序可能会导致大量内存。我的应用程序有时会被系统终止。没有崩溃日志。所以我想知道一些原因。有什么办法可以避免我的应用程序被终止?非常感谢您的帮助。
【问题讨论】:
标签: iphone ios background location terminate
您无法阻止应用程序被终止,但要让它保持活动状态,最好的办法是当它进入后台时尽可能多地释放内存 - 缓存的图像、文件...同时停止任何正在运行的计时器,UI 更新和一切耗时。通过遵循 MVC 规则,最好的实现是创建一个单独的类(模型),它只负责位置更新(内部有CLLocationManager,并且该类实现了它的委托方法)。因此,您唯一应该在后台做的就是收集CLLocationManager 收到的位置点,仅此而已。还要在你的AppDelegate 中实现方法-applicationWillTerminate。仅当应用程序处于后台并且它将被终止(由操作系统或用户)并在内部保留 CoreData 中的位置点时才调用此方法,或者无论如何您都这样做......我有这样的方法和到目前为止,我的应用程序已经存活了 24 小时(当然还有充电)而没有被杀死。
【讨论】:
应用程序在后台运行取决于内存使用情况、电池寿命等。当有许多应用程序在后台运行时,您的应用程序可能会终止。我认为您不能在后台永久运行您的应用程序。
【讨论】: