gpt4 book ai didi

ios - 如果使用 beginBackgroundTaskWithExpirationHandler IOS,应用程序将被杀死

转载 作者:行者123 更新时间:2023-11-28 21:50:01 25 4
gpt4 key购买 nike

我在 applicationDidEnterBackground 委托(delegate)方法中使用 beginBackgroundTaskWithExpirationHandler 方法来保持 NSTimer 继续运行。但是如果长时间留在后台(在我的例子中是 7-10 分钟),应用程序会在很长一段时间后被杀死。我不希望我的应用程序被杀死,而且我希望计时器在后台运行。我该如何摆脱这个问题。以下是我在 applicationDidEnterBackground 方法中编写的代码

- (void)applicationDidEnterBackground:(UIApplication *)application {
if ([application respondsToSelector:@selector(setKeepAliveTimeout:handler:)]) {
[application setKeepAliveTimeout:600 handler:^{

DDLogVerbose(@"KeepAliveHandler");

// Do other keep alive stuff here.
}];
}

/*
* The following code is used to make the app running in background state as certain features
* (eg: NSTimer) doesn not run if its in background or if the phone is locked
*/
UIBackgroundTaskIdentifier locationUpdater =[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
[[UIApplication sharedApplication] endBackgroundTask:locationUpdater];
} ];

}

最佳答案

beginBackgroundTaskWithExpirationHandler 只是为了让您在应用程序离开前台后的几分钟内完成有限长度的任务。 iOS 非常有意地不允许您的应用程序永久在后台运行,除非是非常狭窄的情况(例如 VOIP、音频应用程序、导航应用程序)或狭窄的功能需求(显着更改位置服务、后台获取等)。但是你不能只是在后台永久运行任意代码。

有关选项的讨论,请参阅 Background Execution iOS 应用编程指南部分。

关于ios - 如果使用 beginBackgroundTaskWithExpirationHandler IOS,应用程序将被杀死,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28674314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com