美文网首页
6.后台处理

6.后台处理

作者: LucXion | 来源:发表于2021-10-20 10:36 被阅读0次

进入后台运行时,减少应用的内存占用是非常重要的,这样也可以将唤醒应用所需的时间降到最少。如果丢弃缓存信息,那么唤醒应用跟重新启动应用需要的时间差不多,也就没必要挂起应用了。一定要想清楚可以丢弃哪些对象,以及需要多少时间重新创建这些对象,每一项操作都会消耗电量,即使他们不会使应用明显变慢,也一定要避免不必要的处理。

可以使用NSCache和NSPurgeableData。

将下载文件移动到目录

- (void)download {
    NSURLSession *session;
    NSURLSessionDownloadTask *downloadTask =  [session downloadTaskWithURL:[NSURL new] completionHandler:^(NSURL * _Nullable location, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        NSString *fileName = location.lastPathComponent;
        NSURL *desc = [self documentURLWithPath:fileName];
        if ([[NSFileManager defaultManager]moveItemAtURL:location toURL:desc error:nil]) {
            // 成功
        }else {
            // 失败
        }
    }];
    [downloadTask resume];
}

- (NSURL*)documentURLWithPath:(NSString*)path {
    static NSURL *documentDirectoryURL;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        NSString *docPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;
        documentDirectoryURL = [NSURL fileURLWithPath:docPath];
    });
    return documentDirectoryURL;
}

远程通知

苹果会自动管理发送的频率限制,服务器每发送一个通知,应用程序就会收到一个通知,但是可能会被批量处理。比如说,你每分钟发送一次,但是苹果要把你限制为每小时一次,那么应用程序会在每小时一次性收到60个通知。这不是让应用程序在后台无限制运行的机制。

状态恢复系统

  1. 状态保存必须成功执行。应用终止运行前必须进入后台运行状态。
  2. 应用不可以被强制退出。如果因为严重bug导致的应用强制退出,那么状态恢复可能会导致无限循环bug
  3. 从最近一次状态成功保存开始,没有启动失败过。如果在启动期间关闭程序,那么状态保存信息会被删除。恢复代码中的一个小bug可能会导致应用无法启动。

测试状态恢复的正确方法: 连接xcode启动应用,应用启动后返回桌面,停止运行xcode,重新运行应用。

相关文章

  • 6.后台处理

    进入后台运行时,减少应用的内存占用是非常重要的,这样也可以将唤醒应用所需的时间降到最少。如果丢弃缓存信息,那么唤醒...

  • Android上传图片到服务器(使用base64字节流的形式)

    Android端图片处理:(传Bitmap对象) Android端发送数据: 后台接收数据: 后台图片处理: 最后...

  • 6.异常处理

    1.常见的异常类型 2.如何处理异常(两种方式):抓抛模型 1) "抛":java 应用程序在执行的过程中,如果出...

  • 6.图片处理

    webpack配置

  • Broadcast(六)总结

    1、前台广播,单个receiver处理超过10s就ANR,后台广播(默认也是后台),单个receiver处理超过6...

  • ajax与文件上传

    表单部分 ajax部分 后台处理

  • html-07.day

    1.完善cleafix 2.表单 3.模拟后台服务器 6.条件back

  • vue中split报错undefined的解决方案

    this.resData: 接收后台返回的数组 labelName:要处理的字段 当时的情景是,我要处理一下后台返...

  • 多线程使用场景

    多线程处理后台任务一般来说,我们需要在后台处理的任务,通常会使用定时器来开启后台线程处理,比如有些数据表的状态我需...

  • 七、电池优化及8.0低电耗白名单申请

    1.待做-----JobService后台处理三个原则:1、减少;我们需要减少后台处理2、延迟;当设备充电时候再去...

网友评论

      本文标题:6.后台处理

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