博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
两个与后台有关的回调处理
阅读量:7244 次
发布时间:2019-06-29

本文共 1511 字,大约阅读时间需要 5 分钟。

1.关于程序后台数据处理

  iOS系统在程序进入后台状态后进行数据处理的时间是5s,但这个时间很短,如需在后台进行需要较长时间处理的工作,可向系统申请将这个时间延长,最长为10分钟,这段时间内程序可在后台进行相关数据操作,经测试,可以进行后台下载任务

代码如下,在程序delegate中加入:

#pragma mark -

#pragma mark Background Task Handle

- (void)applicationDidEnterBackground:(UIApplication *)application

{

  NSLog(@"!!!%@",NSStringFromSelector(_cmd));

  UIApplication *app = [UIApplication sharedApplication];

  __block UIBackgroundTaskIdentifier taskId;

  taskId = [app beginBackgroundTaskWithExpirationHandler:^{

    NSLog(@"后台任务超时被退出");

    [app endBackgroundTask:taskId];

  }];

  if(taskId == UIBackgroundTaskInvalid)

  {

    NSLog(@"开启后台任务失败");

    return ;

  }

  dispatch_async(dispatch_get_global_queue(0, 0), ^{

    NSLog(@"后台任务据最长时限还有 %f 秒",app.backgroundTimeRemaining);

    [NSThread sleepForTimeInterval:10];

    NSLog(@"后台任务据最长时限还有 %f 秒",app.backgroundTimeRemaining);

    [app endBackgroundTask:taskId];//通知系统后台任务已处理完毕

  });

}

程序输出为:

2012-01-16 11:28:06.895 backgrounddemo[46774:707] !!!applicationDidEnterBackground:

2012-01-16 11:28:06.904 backgrounddemo[46774:1a03] 后台任务据最长时限还有 599.879219 秒

2012-01-16 11:28:16.924 backgrounddemo[46774:1a03] 后台任务据最长时限还有 589.859110 秒

2.后台时接收到内存不足警告的处理

当程序收到内存警告,会隐式调用didReceiveMemoryWarning进行处理,有可能会释放掉一些资源,如背景图片、控件等,程序从后台转入执行状态后就会出现显示问题,如确定程序不是因为内存泄露而是确实为系统运行程序过多的原因(如上个函数,程序会在后台运行最多10分钟而不释放内存),可以重载didReceiveMemoryWarning函数,使其不进行处理或手动释放掉一些不使用的资源。

代码如下,在程序delegate中加入:

@implementation UIViewController (memoryWarning)

- (void)didReceiveMemoryWarning

{

  //收到内存警告时执行

  //do nothing

}

@end

            ---by yuzhang2

转载地址:http://zmybm.baihongyu.com/

你可能感兴趣的文章
操作 Wave 文件(8): 使用 TMediaPlayer 录制 wav 文件
查看>>
数据库菜鸟系列
查看>>
GdiPlus[39]: IGPGraphicsPath (六) - 路径的辅助工具 IGPGraphicsPathIterator
查看>>
SysUtils.StrAlloc、SysUtils.StrBufSize
查看>>
DELL1320笔记本BIOS升级
查看>>
系统的融合变化感想
查看>>
我的友情链接
查看>>
轻量级开源博客兼CMS系统LBlog发布
查看>>
天气预报的城市三级滚轮的城市表
查看>>
SqlServer2005连接Oracle方法
查看>>
C函数的调用过程 栈帧
查看>>
为什么Maven会更改Eclipse JDK设置
查看>>
疯狂java学习笔记1113---List接口
查看>>
wdlinux centos 7 gearman安装
查看>>
委托delegate
查看>>
Tomcat, Jre 证书相关
查看>>
Magento EasyTabs
查看>>
EDM邮件群发如何高效获取邮件列表?
查看>>
visual studio 2015生成64位DLL文件
查看>>
java.lang.LinkageError
查看>>