14 - XML、JSON、PLIST对比和APP生命周期
XML中间的 数据表达/传输数据的语言
优点:特别强大 强大到很多平台都有基于XML的独立语言,如MXML、HTML
缺点:传输小型数据时,特别啰嗦
size / speed = time
JSON JavaScript Object
传小型数据时使用
是什么?中间的 用于表达/传输数据的语言
比XML更小型、更轻量
JSON语法
用于表达结构的
{ } 用于表达字典
[ ] 用于表达数组
<><><><><><><><><><><><><><><><><><><>
用于表达内存
"" 表达字符串
23 表达一个数字
true false 表达一个布尔
null 表达空
翻译练习
[
{"user" : "苹果汇",
"content" : "iPhone6a的谍照已经被发布",
"date" : "2012/2/23 8:25:21",
"lockToTop" : false
},
{"user" : "apple官方",
"content" : "我什么都没说",
"date" : "2012/2/23 8:28:21",
"lockToTop" : false
}
]
JSON和XML的对比
JSON XML
更轻量 更高功能
文件小 文件大
更关注内容 更加完整的描述结构
传输数据 能干更多其他事情
JSON与XML的使用
1)旧项目支持ios系统
基本使用XML
旧项目很有可能通信已经使用WebService
2)中小型项目ios/android先开展的
一上来很有可能采用JSON
3)特殊情况
XML里嵌套JSON
<menu data="{'title'='Open','arthority'='2'}"></menu>
JSON在ios下的解析
1)NSJSONServ...
NSArray/NSDictionary <-> JSON String
练习:
把JSON转换为实体对象
[
{
"name" : "三桑",
"age" : 8,
"phoneNumber" : "911"
},
{
"name" : "安卓",
"age" : 10,
"phoneNumber" : "912"
}
]
Person类
新浪微博API
open.weibo.com -> 文档 -> 微博API -> 微博接口 -> statues/home_timeline
JSON与Plist区别
JSON Plist
跨语言跨平台 苹果平台自己使用
JSON写的 XML写的
用于数据传输(C/S) 用于轻量存储/应用配置
<><><><><><><><><><><><><><><><><><>
应用程序的生命周期
1)对象的生命周期
init dealloc ...
2)ViewController的生命周期
viewDidLoad
viewWillAppear...
3)View的生命周期
drawRect:
layoutSubviews:
4)应用程序的生命周期
application:didFinishLaunchingWithOptions:
应用程序生命周期干什么?
负责在应用程序发生一些事件时,调用相关消息
事件 <-> 应用程序状态的改变
应用程序的状态
在文档中搜索ios app programming
由操作系统导致的闹铃,购买等状况,应用程序会进入非活动状态Inactive
1)Not
runing非运行态(没打开)
2)Inactive非活动态(暂停)
从属于前台
active->inactive停留在非活动态
程序被暂停,程序依然能被使用者看见,
情况1
程序中央有一个巨大的操作系统级别的对话框,
比如一个闹铃、一个购买提示、通知(特指用户设置在中央显示的通知)、
//
通知有三种样式:状态栏、中央、不显示
情况2
用户点击两下home键
经过inactive
Not
running / active / background 互相切换
active活动态(运行时)
从属于前台,应用程序在运行
background后台态(被关了)
用户并没有操作你当前程序
你的程序可以申请10分钟后台执行代码
Suspended挂起态
你的程序即将被销毁(从内存中移除)
【APP_Lifecycle】
#import "MXAppDelegate.h"
@implementation MXAppDelegate
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after
application launch.
// 非运行态->非活动态(打开时)
// 干什么:
// 配置模型 初始化模型
// 配置第三方框架信息
// 如果没有使用storyboard就要初始化rootViewController
//
* 应用间通信
//
* 处理通知
NSLog(@"didFinishLaunchingWithOptions");
returnYES;
}
- (void)applicationWillResignActive:(UIApplication *)application
{
// 活动态 -> 非活动态(暂停)
// 干什么:
// 暂停游戏
// 暂停各种Timer
NSLog(@"applicationWillResignActive");
}
- (void)applicationDidEnterBackground:(UIApplication *)application
{
// 非活动态 -> 后台态(被关闭)
// 干什么:
// 释放各种资源
// 各种收场 (申请后台操作)如当前要下载多个文件,赶快下载最后一个文件,其他就不下载了
// 提示服务器 (申请后台操作)如用户当前不在线
// 保存文件
// 如果进行后台操作的申请
//
1.向操作系统请求后台运行,并获取后台运行任务码
self.backgroundTaskIdentifier = [application beginBackgroundTaskWithExpirationHandler:^{ // Expiration过期
// 在后台运行任务到期时运行这个代码块
// 4.处理在时间结束后,后台任务仍然没有做完的情况
[application endBackgroundTask:self.backgroundTaskIdentifier];
NSLog(@"applicationDidEnterBackground");
}];
//
2.使用另外一个线程,执行后台运行代码
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); // 0 这个参数没有用
dispatch_async(queue, ^{
// 后台运行的代码写在这
for (int i = 0; i < 1000; i++) {
NSLog(@"%d", i);
[NSThreadsleepForTimeInterval:1];
// 当前应用程序在后台被系统杀掉前还剩几秒
NSLog(@"time:%.2f", [application backgroundTimeRemaining]);
if ([application backgroundTimeRemaining] > 10) {
//...
}else{
//...
}
}
// 3.告知操作系统后台任务执行结束
[application endBackgroundTask:self.backgroundTaskIdentifier];
NSLog(@"applicationDidEnterBackground");
});
}
- (void)applicationWillEnterForeground:(UIApplication *)application
{
// 后台态 -> 前台态
// 干什么:
// 继续下载
// 提示服务器用户在线
NSLog(@"applicationWillEnterForeground");
}
- (void)applicationDidBecomeActive:(UIApplication *)application
{
// 调用时机:非活动态
-> 活动态
// 恢复游戏
// 恢复各种Timer
NSLog(@"applicationDidBecomeActive");
}
- (void)applicationWillTerminate:(UIApplication *)application
{
NSLog(@"applicationWillTerminate");
}
@end
14 - XML、JSON、PLIST对比和APP生命周期的更多相关文章
- 微信小程序-APP生命周期与运行机制
QQ讨论群:785071190 开发微信小程序之前需要先了解微信小程序运行机制以及其生命周期,小程序APP生命周期需要先从app.js这个文件开始. 阅读过"微信小程序-代码构成" ...
- 微信小程序APP生命周期
小程序APP生命周期需要先从app.js这个文件开始,App() 必须在 app.js 中调用,必须调用且只能调用一次,app.js中定义了一些应用的生命周期函数 onLaunch----当小程序初始 ...
- 微信APP生命周期、页面生命周期
目录 小程序的启动流程 app生命周期 页面的生命周期 页面的生命周期(图) 小程序的启动流程 我们画一个图来表示一下,整个小程序的启动流程,我们就知道了: app生命周期 执行App()函数也就是注 ...
- iOS进阶——App生命周期
State Description Not running The app has not been launched or was running but was terminated by the ...
- ecos的app生命周期
5种变迁,安装.更新.启动.暂停.卸载,每个app都可以自行维护每种变迁 方法简单,只需要在app/$app_name目录下定义task.php文件 <?php class desktop_ta ...
- ios app 生命周期
https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/The ...
- app生命周期之即将关闭
需求:当软件正在进行任务还未结束时,如果用户强制退出软件,需要将一些数据进行保存等处理. 策略:当用户使用多任务将软件挂起,并滑掉软件时,接下来有5妙钟的时间留给软件做处理.会调用- (void)ap ...
- OS开发之旅之App的生命周期【转载】
原文链接 http://www.360doc.com/content/15/0918/14/27799428_499912639.shtml 在iOS App中,入口函数并不在根目录下,而是在“Sup ...
- Flutter--Flutter中Widget、App的生命周期
前言 在App的开发过程中,我们通常都需要了解App以及各个页面的生命周期,方便我们在App进入前台时启动一些任务,在进入后台后暂停一些任务.同时,各个页面的生命周期也很重要,每个页面消失时要做一些内 ...
随机推荐
- hadoop的集群安装
hadoop的集群安装 1.安装JDK,解压jar,配置环境变量 1.1.解压jar tar -zxvf jdk-7u79-linux-x64.tar.gz -C /opt/install //将jd ...
- BZOJ 1863: [Zjoi2006]trouble 皇帝的烦恼( 二分答案 )
二分答案..然后从头到尾推一下, 看最后一个能不能取0个和第一个人相同的勋章 ------------------------------------------------------------- ...
- Test class should have exactly one public zero-argument constructor
java.lang.Exception: Test class should have exactly one public zero-argument constructor at org.juni ...
- CodeForces - 27E--Number With The Given Amount Of Divisors(反素数)
CodeForces - 27E Number With The Given Amount Of Divisors Submit Status Description Given the number ...
- HDU2276 - Kiki & Little Kiki 2(矩阵高速幂)
pid=2276">题目链接 题意:有n盏灯.编号从1到n.他们绕成一圈,也就是说.1号灯的左边是n号灯.假设在第t秒的时候,某盏灯左边的灯是亮着的,那么就在第t+1秒的时候改变这盏灯 ...
- 关于PCA算法的一点学习总结
本文出处:http://blog.csdn.net/xizhibei ============================= PCA,也就是PrincipalComponents Analysis ...
- Xcode的Architectures、Valid Architectures和Build Active Architecture Only属性
Architectures 这代表,在这个项目里你想要Xcode编译的目标设备列表. Valid Architectures 还不是太明确这个设置的意图,但是一般来说是不需要更改的,和Architec ...
- [HDU 1973]--Prime Path(BFS,素数表)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1973 Prime Path Time Limit: 5000/1000 MS (Java/Others ...
- 详解python2 和 python3的区别
看到这个题目大家可能猜到了我接下来要讲些什么,呵呵,对了,那就是列出这两个不同版本间的却别!搜索一下大家就会知道,python有两个主要的版本,python2 和 python3 ,但是python又 ...
- PyQt中弹出对话框操作
经常有初学者搞不清楚如何在PyQt中弹出对话框,以及如何处理返回值.这篇文章会举例说明,界面采用手工编写. 我们一般说的对话框指的是模态对话框(Modal Dialogue Box),一旦弹出,就不能 ...