Android,IOS应用程序的生命周期

1.1 Android应用程序的生命周期

一个应用程序的启动一般会遵循如下流程:

  • 启动一个Linux进程
  • 创建runtime
  • 创建Application实例
  • 创建第一个启动组件,如启动页Activity

再来看各种进程的优先级:

  1. 前台进程:如正在前台运行的应用、绑定前台Activity的远程Service、正在运行的BoradcastReceiver
  2. 可见进程:如Activity被部分遮挡的应用
  3. 服务:如未绑定任何可见组件,但在后台运行的Service
  4. 后台进程:如应用被切换到后台,所有的Activity已经不可见
  5. 空进程:已经没有任何存活组件的应用进程,他们的存在仅为了下次更次的启动,当系统资源不足时,这类进程时最先被系统杀死的。

1.2 iOS应用程序的生命周期

The Structure of an App.png
  • UIApplication对象

    用户与iOS设备交互时产生的事件(Multitouch Events,Motion Event,Remote Control Event)交由UIApplication对象来分发给control objects(UIControl)对应的target objects来处理并且管理整个事件循环,而一些关于app运行时重要事件委托给app delegate来处理。

  • App delegate对象

    App delegate对象遵循UIApplicationDelegate协议,响应app运行时重要事件(app启动、app内存不足、app终止、切换到另一个app、切回app),主要用于app在启动时初始化一些重要数据结构;例如,初始化UIWindow,设置一些属性,为window添加rootViewController

  • View controller对象

    View Controller有一个view属性是view层次结构中的根view,你可以添加子view来构建复杂的view;controller有一些viewDidLoadviewWillAppear等方法来管理view的生命周期;由于它继承UIResponder,所有还会响应和处理用户事件。

  • Documents和data model对象

    data model对象主要用来存储数据。例如,饿了么app在搜索切换地址后,有历史记录搜索地址历史,当app下次启动时,读取和显示搜索地址历史。

    document对象(继承UIDocument)用来管理一些或所有的data model对象。document对象并不是必须的,但提供一种方便的方式来分组属于单个文件或多个文件的数据。

  • UIWindow对象

    UIWindow对象位于view层次结构中的最顶层,它充当一个基本容器而不显示内容,如果想显示内容,添加一个content view到window。

    它也是继承UIResponder,所以它也是会响应和处理用户事件。

  • Viewcontrollayer对象

    View对象可以通过addSubview和removeFromSuperview 等方法管理view的层次结构,使用layoutIfNeeded和setNeedsLayout等方法布局view的层次结构,当你发现系统提供view已经满足不了你想要的外观需求时,可以重写drawRect方法或通过layer属性来构造复杂的图形外观和动画。还有一点,UIView也是继承UIResponder,所以也能够处理用户事件

    Control对象通常就是处理特定类型用户交互的View,常用的有button、switch、text field等。

    除了使用ViewControl来构建view层次结构来影响app外观之外,还可以使用Core Animation框架的Layer对象来渲染view外观和构建复杂的动画。


2.1 Activity组件生命周期

Android应用程序显示的永远都是栈顶的Activity。


Back Stack 后退栈
生命周期函数 函数调用时机
onCreate() 当一个Activity对象被创建时调用
onStart() 当刚开始出现Activity界面时调用
onResume() 当该Activity对象完全被显示,可以和用户交互时调用
onPause() 当从一个Activity对象跳到另一个Activity对象时调用
onStop() 当这个Activity对象被另外一个Activity对象完全覆盖时调用
onRestart() 当一个Activity对象再次启动时调用
onDestroy() 当一个Activity对象被销毁时调用
Android官方提供的Activity生命周期图

Activity对象的三种状态:

  1. Resumed状态:此时Activity处于活动状态,可以与用户交互;
  2. Paused状态:此时启动了第二个Activity,当第一个Activity对象并没有消失掉,例如弹窗;
  3. Stopped状态:此时第二个Activity完全覆盖了第一个Activity,这时候第一个Activity对象就处于Stopped状态;

2.2 IOS 的应用程序的状态和多任务

有时系统会从app一种状态切换另一种状态来响应系统发生的事件。例如,当用户按下home键、电话打入、或其他中断发生时,当前运行的应用程序会切换状态来响应。应用程序的状态有以下几种:

App State from Apple Document
  • Not running:app还没运行

  • Inactive:app运行在foreground但没有接收事件

  • Active:app运行在foreground和正在接收事件

  • Background:运行在background和正在执行代码

  • Suspended:运行在background但没有执行代码

大多数发生状态转换时都会调用delegate对象对应的方法来响应app的状态改变。下面汇总了delegate对象的所有方法,当app状态发生转换时,你可能会使用到它们。

  • application:willFinishLaunchingWithOptions: - 这个方法是你在启动时的第一次机会来执行代码

  • application:didFinishLaunchingWithOptions: - 这个方法允许你在显示app给用户之前执行最后的初始化操作

  • applicationDidBecomeActive: - app已经切换到active状态后需要执行的操作

  • applicationWillResignActive: - app将要从前台切换到后台时需要执行的操作

  • applicationDidEnterBackground: - app已经进入后台后需要执行的操作

  • applicationWillEnterForeground: - app将要从后台切换到前台需要执行的操作,但app还不是active状态

  • applicationWillTerminate: - app将要结束时需要执行的操作

参考:
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351

推荐阅读更多精彩内容