美文网首页iOS常用
IOS 保持程序在后台一定时间运行

IOS 保持程序在后台一定时间运行

作者: lylzd | 来源:发表于2021-01-15 11:02 被阅读0次

    根据用户需求,在执行任务时因外部因素程序退到后台;一段时间之后回来能继续在当前页面操作。

    @property (nonatomic, assign)BOOL    goingToQuit;

    //自定义停留时间

    #define KILL_IN_BACKGROUND_AFTER_SECS3600

    // APP进入后台

    - (void)applicationDidEnterBackground:(UIApplication *)application

    {

        [self comeToBackgroundMode];

        //环信调用applicationDidEnterBackground 后会导致应用回到后台就被杀死

        //[[EMClient sharedClient] applicationDidEnterBackground:application];

    }

    /*

     *退出后台保证应用短时间内不被杀死

     **/

    -(void)comeToBackgroundMode{

        self.goingToQuit = YES;

        UIApplication* app = [UIApplication sharedApplication];

        UIBackgroundTaskIdentifier  __block   bgTask;//设置后台任务ID

        //开始申请一些额外的时间来处理任务,延迟系统挂起你的应用

        bgTask = [app beginBackgroundTaskWithExpirationHandler:^{

          //退到后台后30秒进入

          [app endBackgroundTask:bgTask];//告诉系统,任务完成了,可以挂起APP了

          bgTask =UIBackgroundTaskInvalid;

        }];

        //过期处理

        if(UIBackgroundTaskInvalid != bgTask) {

          // Start the long-running task to kill app after some secs and return immediately.

          dispatch_after( dispatch_time(DISPATCH_TIME_NOW, KILL_IN_BACKGROUND_AFTER_SECS * 1e09),

            dispatch_get_main_queue(), ^{

              if(self.goingToQuit){

                  self.goingToQuit=NO;

                  exit(0);

              }

              [app   endBackgroundTask: bgTask];

            });

        }

    }

    相关文章

      网友评论

        本文标题:IOS 保持程序在后台一定时间运行

        本文链接:https://www.haomeiwen.com/subject/cbiiaktx.html