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进入前台时启动一些任务,在进入后台后暂停一些任务.同时,各个页面的生命周期也很重要,每个页面消失时要做一些内 ...
随机推荐
- android api 中文 (75)—— AdapterView.OnItemClickListener
前言 本章内容是android.widget.AdapterView.OnItemClickListener,版本为Android 2.3 r1,翻译来自"麦子",欢迎大家与他交流 ...
- 淘特房产CMS系统 7.5
资源描写叙述: 淘特房产CMS系统採用淘特AspCms开发,全部前台信息生成静态HTM,提供了楼盘.二手房.房产中介.房产经济人.业主社区等管理模块,集成了淘特CMS与动网论坛,Discuz,Oblo ...
- C# Best Practices - Building Good Classes
Building a Class The last four refer as members Signature Accessiblity modifier (Default:internal) c ...
- C++学习之虚继承
http://blog.csdn.net/wangxingbao4227/article/details/6772579 C++中虚拟继承的概念 为了解决从不同途径继承来的同名的数据成员在内存中有不同 ...
- 「OC」 封装
一.面向对象和封装 面向对象的三大特性:封装.继承和多态 在OC语言中,使用@interface和@implementation来处理类. @interface就好像暴露在外面的时钟表面,像外界提 ...
- Servlet学习的两个案例之网站访问次数的统计
一.统计次数的Servlet源码 package com.shanrengo; import java.io.IOException; import javax.servlet.ServletCont ...
- django开发简易博客(一)
这几篇博客是根据GoodSpeed的博客该写的,看了他的博客收获很大,但是他的博客从第三篇开始,条理很不清晰,加之又是几年之前写的,编写环境发生很大改变,所以对他的博客进行了一个整理,加入了一些自己的 ...
- jbpmAPI-2
2.1. Downloads 所有的版本都可以从SourceForge下载.选择您想要下载的版本,然后选择你想要工件: https://sourceforge.net/projects/jbpm/fi ...
- Uva 1061 The Morning after Halloween
基本思路是BFS: 1. 题目中已经说了,每相连的2X2格子中必有一个‘#’,也就是,每个点周围最多也就三个方向可以走.因此,可以把所有空格都提出来,形成一个图,直接遍历每条边,而不是每次判断4个方向 ...
- 从数据库中,绑定JQuery Accordion控件---Repeater control
http://aspsnippets.com/Articles/jQuery-Accordion-example-in-ASPNet-using-C-and-VBNet.aspx 1. 添加JQuer ...