如何避免我的应用程序在后台运行并跟踪我的位置时被终止?

Posted

技术标签:

【中文标题】如何避免我的应用程序在后台运行并跟踪我的位置时被终止?【英文标题】:How to avoid my app to be terminated, when it's running and tracking my location in the background? 【发布时间】:2012-06-17 03:22:07 【问题描述】:

我正在制作一个应用程序,它需要每次都跟踪用户的位置。它也可以在后台模式下工作。问题是当我多次使用其他应用程序时。其他应用程序可能会导致大量内存。我的应用程序有时会被系统终止。没有崩溃日志。所以我想知道一些原因。有什么办法可以避免我的应用程序被终止?非常感谢您的帮助。

【问题讨论】:

【参考方案1】:

您无法阻止应用程序被终止,但要让它保持活动状态,最好的办法是当它进入后台时尽可能多地释放内存 - 缓存的图像、文件...同时停止任何正在运行的计时器,UI 更新和一切耗时。通过遵循 MVC 规则,最好的实现是创建一个单独的类(模型),它只负责位置更新(内部有CLLocationManager,并且该类实现了它的委托方法)。因此,您唯一应该在后台做的就是收集CLLocationManager 收到的位置点,仅此而已。还要在你的AppDelegate 中实现方法-applicationWillTerminate。仅当应用程序处于后台并且它将被终止(由操作系统或用户)并在内部保留 CoreData 中的位置点时才调用此方法,或者无论如何您都这样做......我有这样的方法和到目前为止,我的应用程序已经存活了 24 小时(当然还有充电)而没有被杀死。

【讨论】:

【参考方案2】:

应用程序在后台运行取决于内存使用情况、电池寿命等。当有许多应用程序在后台运行时,您的应用程序可能会终止。我认为您不能在后台永久运行您的应用程序。

【讨论】:

感谢您的快速回复。如果我的应用使用较少的内存,是否会减少被终止的机会? 并且您可以在位置发生变化时通知用户。点击此链接:***.com/questions/3775730/…

以上是关于如何避免我的应用程序在后台运行并跟踪我的位置时被终止?的主要内容,如果未能解决你的问题,请参考以下文章

仅在前台应用:如何避免“未声明后台位置访问”

当应用程序未在后台运行时,使用 startmonitoringsignfiicantlocationchanges 跟踪设备位置

当我“关闭” UISwitch 时,后台位置服务跟踪不会停止

如何在 React Native 应用程序的 iOS 后台运行 socket.io?

平板电脑处于待机状态时,我的 GPS 应用程序是不是可以继续在后台运行?

iOS 位置更新,即使应用程序没有运行(比如找到我的 iphone)