AppDelegate

一、基础知识

  1) main.m指定了程序的入口点

UIApplicationMain(argc, argv,nil,NSStringFromClass([StartingPointAppDelegateclass]));

  2) AppDelegate的入口点

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {}

  3) 前台和后台程序切换执行方法

- (void)applicationWillEnterForeground:(UIApplication *)application {}
程序将置于前台,程序启动的时候不会相应此方法,而是按下home以后再次回复程序的时候响应。
- (void)applicationDidBecomeActive:(UIApplication *)application {} 程序已经置于前台,程序刚启动也会响应此方法。按下home以后再次回来也会响应。
- (void)applicationWillResignActive:(UIApplication *)application {} 程序将要退出后台,按下home以后,程序不会立即消失,系统会先调用此方法。
- (void)applicationDidEnterBackground:(UIApplication *)application {} 程序已经置于后台了,按home以后,程序完全消失会调用。

 

二、程序后台运行

  1)在没有使用GCD时,当app被按home键退出后,app仅有最多5秒钟的时候做一些保存或清理资源的工作。但是在使用GCD后,app最多有10分钟的时间在后台长久运行。这个时间可以用来做清理本地缓存,发送统计数据等工作。

  注意:
      当多程序切换的时候,程序不会被关闭,在系统规定的一段时间内可以正常执行。
      当一个程序使用的内存太大,而导致系统内存不足的时候,程序会被关闭,任务会终止,直到下次启动程序,并退到后台的时候,后台任务才会重新执行。
      运行的条件必须在软件不被关闭的情况下可用。

// AppDelegate.h@property (assign, nonatomic) UIBackgroundTaskIdentifier* backgroundTaskIdentifier;// AppDelegate.m- (void)applicationDidEnterBackground:(UIApplication *)application {[self beingBackgroundUpdateTask];NSLog(@"加上你需要多久运行的代码"); NSLog(@"剩余执行时间: %f", [[UIApplication sharedApplication] backgroundTimeRemaining]);[self endBackgroundUpdateTask];
}-(void) beingBackgroundUpdateTask {self.backgroundTaskIdentifier = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{[self endBackgroundUpdateTask];}];
}-(void) endBackgroundUpdateTask {[[UIApplication sharedApplication] endBackgroundTask: self.backgroundTaskIdentifier];self.backgroundTaskIdentifier = UIBackgroundTaskInvalid;}

  2) 每隔一段时间,系统自动执行的任务(设置的值必须大于等于600)

    注意:
       当多程序切换的时候,此任务也会被关闭。
         运行的条件必须在软件不被关闭的情况下可用

    执行的必要条件:
        找到程序的 plist 配置文件,增加:
        键:UIBackgroundModes 类型:Array
        在 Item0 里面设置类型:String,值:voip

[[UIApplication sharedApplication] setKeepAliveTimeout:600 handler:^{//执行你想要执行的任务,同时可以配合第一种任务,以增加某些同步方法的执行时间,比如说下载数据等}];

 

 

 

 

转载于:https://www.cnblogs.com/eileenleung/p/3505413.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/265231.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机应用基础期末考试要点,计算机应用基础期末复习要点.doc

PAGE 4 / NUMPAGES 5 计算机应用基础 期末复习要点 DATE \ "yyyy-M-d" 2009-1-2PAGE计算机应用基础期末复习要点基础世界上第一台电子数字计算机取名为ENIAC。美籍匈牙利数学家冯诺伊曼提出的计算机的基本工作原理是程序存储。根据计算机使用的主要元器件&#xff0c…

快速对比UART、SPI、I2C通信的区别与应用

参考:带你快速对比SPI、UART、I2C通信的区别与应用! 作者:一口Linux 网址:https://mp.weixin.qq.com/s/4_RSM2jk2W6nTboO1W8HCw 电子设备之间的通信就像人类之间的交流,双方都需要说相同的语言。在电子产品中&#xff…

Java使用线程并发库模拟弹夹装弹以及发射子弹的过程

同样是从网上看到的一个需求,需求描述都在代码中。 不多说了,直接贴代码了。相信大家都能够看得懂的! package cn.yw.bore;import java.util.ArrayList; import java.util.List; import java.util.concurrent.ArrayBlockingQueue; import jav…

计算机结构原理初步教案板书设计,(计算机工作原理)教学设计(教案)

《(计算机工作原理)教学设计(教案)》由会员分享,可在线阅读,更多相关《(计算机工作原理)教学设计(教案)(5页珍藏版)》请在人人文库网上搜索。1、计算机系统的基本组成教学设计基本信息学 科信息技术年 级初二教学形式多媒体教学教 师彭裕红单 位梅州市梅…

U-Boot 移植

目录NXP官方开发板uboot编译测试查找NXP官方的开发板默认配置文件_defconfig配置编译NXP官方开发板对应的uboot烧写验证与驱动测试(定位缺少的驱动)在NXP官方U-Boot 中添加自己的开发板添加开发板默认配置文件添加开发板对应的头文件(mx6ull_alientek_emmc.h)添加开发板对应的板…

江苏计算机信息录入技师选拔考试题,2010年江苏省机关事业单位工人技师资格选拔考试试卷...

考题2010年江苏省机关事业单位工人技师资格选拔考试试卷计算机一、单项选择题1.计算机之所以能按人们的意志自动进行工作,最直接的原因是因为采用()A.二进制数制 B.高速电子元件 C.存储程序控制 D.程序设计语言2.十进制数269转换为十六进制数为()A&#…

打印某个进程下的所有线程--Linux环境

2019独角兽企业重金招聘Python工程师标准>>> 1、ps -mp <进程ID> -o THREAD 在当前用户下&#xff0c;列出pid包含的所有线程。 2、ps -mp <进程ID> -o THREAD,tid 在当前用户下&#xff0c;列出pid包含的所有线程信息及本地线程ID (tid)。 3、ps -…

JavaScript笔记(3)

•位操作符 所有的按位操作符的操作数都会被转成补码形式的有符号的32位整数。 运算符用法描述按位与&#xff08;AND&#xff09;a & b对于每一个比特位&#xff0c;只有两个操作数相应的比特位都是1时&#xff0c;结果才为1&#xff0c;否则为0。按位或&#xff08;OR&am…

转 常见hash算法的原理

散列表,它是基于快速存取的角度设计的&#xff0c;也是一种典型的“空间换时间”的做法。顾名思义&#xff0c;该数据结构可以理解为一个线性表&#xff0c;但是其中的元素不是紧密排列的&#xff0c;而是可能存在空隙。 散列表&#xff08;Hash table&#xff0c;也叫哈希表&a…

Linux 内核顶层Makefile 详解

目录前602行分析make xxx_defconfig 过程Makefile.build 脚本分析make 过程built-in.o 文件编译生成过程make zImage 过程前几章我们重点讲解了如何移植uboot 到I.MX6U-ALPHA 开发板上&#xff0c;从本章开始我们就开始学习如何移植Linux 内核。同uboot 一样&#xff0c;在具体…

android第三次作业

界面&#xff1a; 主要代码&#xff1a; 1.定义一个工具类&#xff0c;在这个类中获取音频文件&#xff0c;并且对歌曲名、歌手和时间等进行格式规范&#xff1a; package com.example.administrator.music;import android.content.Context; import android.database.Cursor; i…

2013年国家计算机一级考试试题,2013年计算机一级的考试试题.doc

2013年计算机一级的考试试题.doc2013年计算机一级考试试题一、单项选择题1、 把计算机分巨型机、大中型机、小型机和微型机&#xff0c;本质上是按_____划分。A 计算机的体积 B CPU的集成度C 计算机总体规模和运算速度 D 计算机的存储容量2、 以微处理器为核心组成的微型计算机…

python try 异常处理 史上最全

在程序出现bug时一般不会将错误信息显示给用户&#xff0c;而是现实一个提示的页面&#xff0c;通俗来说就是不让用户看见大黄页&#xff01;&#xff01;&#xff01; 有时候我们写程序的时候&#xff0c;会出现一些错误或异常&#xff0c;导致程序终止. 为了处理异常&#xf…

Spring+Spring Security+JSTL实现的表单登陆的例子

2019独角兽企业重金招聘Python工程师标准>>> Spring Security允许开发人员轻松地将安全功能集成到J2EE Web应用程序中&#xff0c;它通过Servlet过滤器实现“用户自定义”安全检查。 在本教程中&#xff0c;我们将向您展示如何在Spring MVC中集成Spring Security 3…

数学教师计算机能力提升,深度融合信息技术,提升数学课堂魅力

原标题&#xff1a;深度融合信息技术&#xff0c;提升数学课堂魅力2018年小学数学教学与信息技术深度融合专题网络教研活动2018年10月31日&#xff0c;我校数学科组根据北片指导中心文件精神&#xff0c;进行了一次小学数学教学与信息技术深度融合专题网络教研活动。本次教研活…

Linux 内核启动流程

目录链接脚本vmlinux.ldsLinux 内核入口stext__mmap_switched 函数start_kernel 函数rest_init 函数init 进程看完Linux 内核的顶层Makefile 以后再来看Linux 内核的大致启动流程&#xff0c;Linux 内核的启动流程要比uboot 复杂的多&#xff0c;涉及到的内容也更多&#xff0c…

vs文件上传失败--超过最大字符限制

一、问题 在文件上传时&#xff0c;会遇到大文件上传失败。 》F12查看报错网络请求返回结果 》问题分析 由于vs上传文件默认的字符大小控制。 二、解决方法 》在web.config中修改或添加最大允许上传文件的大小 1 <system.web> 2 <httpRuntime targetFramework&q…

为什么linux默认都没有MP3和视频或者连FLASH都没有呢?

为什么linux默认都没有MP3和视频或者连FLASH都没有呢&#xff1f;这是转自官方的说明。先后明&#xff0c;后面讲一下如何动手来让LINUX支持这些最基本的功能&#xff01;为什么 Fedora 没有包含对专有格式例如 MP3 或 MPEG 的支持&#xff1f; MP3 和 MPEG 格式受专利保护&…

微计算机和微处理器的区别,CPU和微处理器的区别

CPU和微处理器是成功操作系统的基础。它们都执行不可或缺的计算机任务&#xff0c;例如算术&#xff0c;数据处理&#xff0c;逻辑和I / O操作&#xff0c;但是CPU与微处理器的区别并不是那么黑与白。尽管一些IT管理员可以互换使用CPU和微处理器&#xff0c;但现实是大多数CPU是…

单例模式创建的两种方法

package com.wetuo.javabase; public class SingletonDemo {private static SingletonDemo instance new SingletonDemo();private SingletonDemo() {}public static SingletonDemo getInstance() {return instance;}//充血模式} 方法二 public class SingletonDemo {private …