iOS app退到后台被杀相关问题

2022-05-05  本文已影响0人  微风_10a5
前言

iOS提供了后台任务的机制,利用后台任务,App可以在用户退后台后有一小段时间进行一些必要的逻辑处理(经过测试在iOS15.4,大概是30秒左右,也就是说大概30秒左右的时间内,app是可以正常运行一些任务的,过了这段时间,就不能执行任何任务了)。

以下两个API用来新建和结束后台任务。

//新建一个后台任务(handler中可以调用兜底的endBackgroundTask)
- (UIBackgroundTaskIdentifier)beginBackgroundTaskWithExpirationHandler:(void (^)(void))handler;

//结束后台任务 —— 必须调用,否则系统会杀死App
- (void)endBackgroundTask:(UIBackgroundTaskIdentifier)identifier;`
最终效果如下
几个坑点
建议
    //1. 新建一个后台任务
    __block UIBackgroundTaskIdentifier taskId;
    taskId = [[UIApplication sharedApplication] beginBackgroundTaskWithName:@"TaskID"
                                                          expirationHandler:^{
  //4.兜底逻辑写在这里,结束后台任务,防止系统分配的时间配额用尽时后台任务业务逻辑仍未执行完(保证app在任务没有执行完成时,也不会被系统杀掉)
                                                              [[UIApplication sharedApplication] endBackgroundTask:taskId];
                                                          }];
    
    //2. 执行后台任务主要逻辑写下面
    //todo...
    
    //3. 后台任务业务逻辑执行完成后,结束后台任务
    [[UIApplication sharedApplication] endBackgroundTask:taskId];

结尾

今天的分享至此接近尾声喽,小伴们,觉得有点用的话,或者已经看到这里面来的请点赞加关注吧~~
后续分享更多iOS原生技术及物联网技术相关文章。如果有任何疑问的话,欢迎在下方留言~

上一篇下一篇

猜你喜欢

热点阅读