Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 应用程序在后台保留几分钟后被杀死_Ios_Objective C - Fatal编程技术网

Ios 应用程序在后台保留几分钟后被杀死

Ios 应用程序在后台保留几分钟后被杀死,ios,objective-c,Ios,Objective C,当我打开我的应用程序并做一些事情时(比如导航到特定位置) ViewController),然后我在几分钟内不触摸应用程序iPhone被锁定(应用程序进入后台状态) 几天后 当我解锁iPhone时,我的应用程序会被杀死。它会 在打开状态(活动状态)下不存在。我需要通过单击应用程序图标显式打开它 我没有在背景状态下做任何事情 还有一点需要补充的是,应用程序并没有崩溃 如果您正确地检查了您的应用程序没有崩溃,它显示在多任务UI中,而您没有崩溃,那么我会说您的应用程序正在被系统终止(由于内存压力或其他原

当我打开我的应用程序并做一些事情时(比如导航到特定位置)
ViewController
),然后我在几分钟内不触摸应用程序iPhone被锁定(应用程序进入
后台状态)

  • 几天后 当我解锁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,这将非常有用