在 iOS 7 中运行的应用程序在后台被杀死

Posted

技术标签:

【中文标题】在 iOS 7 中运行的应用程序在后台被杀死【英文标题】:App be killed in the background running in iOS 7 【发布时间】:2013-12-26 09:56:15 【问题描述】:

我的应用使用 CoreBluetooth 连接 BLE 设备,还在 info.plist 中添加了 UIBackgroundModes(值“bluetooth-central”)。当应用程序进入后台时,应用程序可以继续从连接的设备读取 RSSI 值。但是应用程序在几分钟后每次都会在后台被杀死。我使用instruments工具来测试live bytes,总字节数大约12MB。在iphone4s,iphone5,iphone5s中测试app,有这样的问题。所以不知道怎么解决?我的应用程序需要在后台运行很长时间。大家有其他想法吗?

【问题讨论】:

您的应用程序可能会被另一个应用程序杀死,后台模式并不能保证您的应用程序不会被杀死。如果系统要求一些内存,首先它会杀死“其他”,如果它再次需要内存,它也会杀死后台应用程序。你在哪些设备上测试,关闭应用后你在做什么操作? 【参考方案1】:

我认为你应该启动一个后台任务。

UIApplication *app = [UIApplication sharedApplication];
UIBackgroundTaskIdentifier taskIdentifier = [app beginBackgroundTaskWithExpirationHandler:^
    // Cleanup before closing app
];

【讨论】:

这对于过期任务很有用,而不是完全后台支持模式。

以上是关于在 iOS 7 中运行的应用程序在后台被杀死的主要内容,如果未能解决你的问题,请参考以下文章

应用程序被杀死时删除钥匙串

当应用程序在后台或被杀死时,GCM 支持 ios 应用程序

为啥即使我在后台请求位置更新,我的 iOS 应用程序也会被杀死?

即使应用程序在 ios 中被杀死或从后台删除,如何继续更新我的位置?

防止iOS在几分钟后杀死App

应用程序被杀死/关闭/未打开时的 IOS 推送通知操作