Ios 应用程序在后台保留几分钟后被杀死
当我打开我的应用程序并做一些事情时(比如导航到特定位置)Ios 应用程序在后台保留几分钟后被杀死,ios,objective-c,Ios,Objective C,当我打开我的应用程序并做一些事情时(比如导航到特定位置) ViewController),然后我在几分钟内不触摸应用程序iPhone被锁定(应用程序进入后台状态) 几天后 当我解锁iPhone时,我的应用程序会被杀死。它会 在打开状态(活动状态)下不存在。我需要通过单击应用程序图标显式打开它 我没有在背景状态下做任何事情 还有一点需要补充的是,应用程序并没有崩溃 如果您正确地检查了您的应用程序没有崩溃,它显示在多任务UI中,而您没有崩溃,那么我会说您的应用程序正在被系统终止(由于内存压力或其他原
ViewController
),然后我在几分钟内不触摸应用程序iPhone被锁定(应用程序进入后台状态)
活动状态
)下不存在。我需要通过单击应用程序图标显式打开它背景状态下做任何事情
如果您正确地检查了您的应用程序没有崩溃,它显示在多任务UI中,而您没有崩溃,那么我会说您的应用程序正在被系统终止(由于内存压力或其他原因) 提到: 应用程序必须随时准备终止,并且应该 不等待保存用户数据或执行其他关键任务。 系统启动的终止是应用程序生命周期的正常部分。 系统通常会终止应用程序,以便回收内存和内存 为用户启动的其他应用程序腾出空间,但系统 也可能终止行为不正常或没有响应的应用程序 及时处理事件 暂停的应用程序在终止时不会收到通知;这个 系统终止进程并回收相应的内存。如果 应用程序当前正在后台运行,且未挂起 系统调用其应用程序委托的
应用程序将终止:
终止
因此,在您的场景中,应用程序进入暂停状态,一段时间后(您提到的那5分钟),应用程序被系统终止。请看下面的图片 如果您想降低应用程序因内存压力而被终止的可能性,请查看,特别是: 根据需要释放内存。释放所有不需要的缓存数据 并进行任何可能会减少应用程序内存的简单清理 足迹。内存占用大的应用程序是第一个被开发的 由系统终止,因此释放图像资源、数据缓存和 您不再需要的任何其他对象。有关详细信息,请参阅 减少内存占用
确保“功能选项”中的后台模式处于打开状态(我已经开发了一个导航应用程序,并在后台使应用程序保持活动状态超过8小时以进行跟踪) 在目标C中实现以下代码
- (void)backgroundCleanDisk {
Class UIApplicationClass = NSClassFromString(@"UIApplication");
if(!UIApplicationClass || ![UIApplicationClass respondsToSelector:@selector(sharedApplication)]) {
return;
}
UIApplication *application = [UIApplication performSelector:@selector(sharedApplication)];
__block UIBackgroundTaskIdentifier bgTask = [application beginBackgroundTaskWithExpirationHandler:^{
// Clean up any unfinished task business by marking where you
// stopped or ending the task outright.
[application endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
// Start the long-running task and return immediately.
[self cleanDiskWithCompletionBlock:^{
[application endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
}
检查控制台日志。如果您双击Home按钮,您的应用程序是否会显示在多任务UI中?解锁手机后,你的应用程序不再是前台应用程序。Alex@It在多任务用户界面中有。这是默认行为。如果是,请提供url,这将非常有用