如何避免iOS应用程序在后台经常被系统终止

vil*_*ovi 6 memory iphone objective-c ios

我正在为iOS 8和9构建一个iOS应用程序,我面临的问题是,当应用程序进入后台时,系统会在2或3分钟后终止它.

我的测试很简单:

  1. 我从iPhone上删除所有正在运行的应用程序.
  2. 我重启我的iPhone(以确保没有其他应用程序占用内存).
  3. 我启动了我的应用.
  4. 我在我的应用程序中什么都不做
  5. 我按下"主页"按钮,将我的应用程序移动到后台.
  6. 我等不了2分钟或3分钟.
  7. 我再次打开我的应用程序并惊讶,系统已终止它,现在它正在重新启动作为新的启动.

一些评论:

  • 该应用程序不在后台使用CoreLocation,也不使用任何其他服务.
  • 我已经分析了应用程序,试图了解它是否消耗了太多内存.移动到后台时,它消耗大约25Mb的RAM内存.我在下面附上截图.
  • 此行为已在iPhone 5,5s,6,6 +上进行了测试.
  • 在iPhone 6s和6s +似乎需要更多时间才能发生,但仍然会发生.

应用分配配置文件

我的问题是:你知道为什么会这样吗?我可能不会考虑或忘记的任何事情?

我不想通过使用CoreLocation或类似的东西强制我的应用程序在后台运行.如果系统最终杀死我的应用程序,我很好.我不想要的是每次我将我的应用程序移动到后台时系统都会终止它.

任何提示或帮助将不胜感激.

谢谢,

Atl*_*ndu 0

所有应用程序都会被系统自动杀死

\n\n

根据苹果文档:

\n\n
\n

应用程序终止

\n\n

应用程序必须做好随时终止的准备,并且不应等待保存用户数据或执行其他关键任务。系统启动的 > 终止是 app\xe2\x80\x99s 生命周期的正常部分。系统通常会终止应用程序,以便回收内存并为用户启动的其他应用程序腾出空间,但系统也可能终止行为不当或未及时响应事件的应用程序。

\n\n

挂起的应用程序在终止时不会收到任何通知;>系统杀死进程并回收相应的内存。如果应用程序当前正在后台运行且未挂起,系统会在终止之前调用其应用程序委托的 applicationWillTerminate: 。>设备重启时系统不会调用该方法。

\n\n

除了系统终止您的应用程序之外,用户还可以使用多任务 UI 显式终止您的应用程序。用户发起的终止>与终止挂起的应用程序具有相同的效果。app\xe2\x80\x99s 进程被>终止,并且不会向应用程序发送任何通知。

\n\n

https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/TheAppLifeCycle/TheAppLifeCycle.html#//apple_ref/doc/uid/TP40007072-CH2-SW1

\n
\n\n

您可以跟踪位置,但您肯定会看到蓝色状态栏,表明应用程序使用 GPS 跟踪。

\n\n

也许您可以尝试通过无声通知在后台“唤醒”您的应用程序......

\n\n

如果不需要让您的应用程序保持活动状态,请相信系统......

\n