Android 开发艺术探索笔记 -Activity的生命周期 And 启动模式

《Android开发艺术探索》第一章笔记


1.典型情况下的生命周期分析


1).onCreate:表示Activity正在被创建

2).onRestart:表示Activity正在被重新启动

一般情况下,当前Activity从不可见重新变为可见的状态,onRestart就会被调用 

3).onStart:表示当前的Activity正在被启动。 

    这个时间可以理解为Activity已经显示出来,但是我们看不到

4).onResume表示当前的Activity已经可见了

    onResume和onStart的区别是

    onStart的时候在后台,onResume的时间在前台

5).onPause表示Activity正在停止,紧接的是onStop就会被调用

    这个时候可以做一些存储数据,停止动画等动作,但是不能耗时,因为会影响新的Activity的显示,

                                    onPause必须执行完,新的Activity才会显示!!!

6).onStop:表示Activity即将停止

7).OnDestroy:表示Actvity即将被销毁


针对一个特定的Activtiy,第一次启动:onCreate - onStart - onResume

当用户回到原来的Activity,回调 :onRestart - onStart - onResume

当用户按下Back键回退时,回调:onPause -onPause - onDestory

onStart 和 onResume 是从Activity是否可见来回调的

onPause 和 onPause 是从Activtiy是否位于前台来回调的





2.异常情况下的生命周期分析

3.Activity的启动模式


讲到启动模式,肯定要讲到一个最的东西--- 任务栈

借鉴文章 

任务栈

任务栈Task,是一种用来放置Activity实例的容器,他是以栈的形式进行盛放,也就是所谓的先进后出,主要有2个基本操作:压栈和出栈,其所存放的Activity是不支持重新排序的,只能根据压栈和出栈操作更改Activity的顺序。

启动一个Application的时候,系统会为它默认创建一个对应的Task,用来放置根Activity。默认启动Activity会放在同一个Task中,新启动的Activity会被压入启动它的那个Activity的栈中,并且显示它。当用户按下回退键时,这个Activity就会被弹出栈,按下Home键回到桌面,再启动另一个应用,这时候之前那个Task就被移到后台,成为后台任务栈,而刚启动的那个Task就被调到前台,成为前台任务栈,手机页面显示的就是前台任务栈中的栈顶元素。


1).Activity的LaunchMode

    standard:标准模式,这个也是系统默认的方式,

    每次启动会重新创建新的实例,谁启动了这个Activity,这个Activity就在谁的栈里。

    singleTop:栈顶复用模式

    该Activity的onNewIntent方法会被回调,onCreate和onStart并不会被调用。

    singleTask:栈内复用模式

    只要该Activity在一个栈中存在,都不会重新创建,onNewIntent会被回调。

    如果不存在,系统会先寻找是否存在需要的栈,如果不存在该栈,就创建一个任务栈,然后       把这个Activity放进去;如果存在,就会创建到已经存在的这个栈中。


    singleInstance:单实例模式 这是一种加强的singleTask模式,它除了具有singleTask模式的

所有的特性外,还加强了一点,就是具有此种模式的Activity只能单独地位于一个任务栈中

重点

1.1

(1) onStart和onResume的区别是onStart可见,还没有出现在前台,无法和用户进行交互。onResume获取到焦点可以和用户交互。

(2) 新Activity是透明主题时,旧Activity不会走onStop;

(3)Activity切换时,旧Activity的onPause会先执行,然后才会启动新的Activity;

(4)Activity在异常情况下被回收时,onSaveInstanceState方法会被回调,回调时机是在onStop之前,当Activity被重新创建的时候,onRestoreInstanceState方法会被回调,时序在onStart之后;

(5)Activity的LaunchMode

a. standard 系统默认。每次启动会重新创建新的实例,谁启动了这个Activity,这个Activity就在谁的栈里。

b. singleTop 栈顶复用模式。该Activity的onNewIntent方法会被回调,onCreate和onStart并不会被调用。

c. singleTask 栈内复用模式。只要该Activity在一个栈中存在,都不会重新创建,onNewIntent会被回调。如果不存在,系统会先寻找是否存在需要的栈,如果不存在该栈,就创建一个任务栈,然后把这个Activity放进去;如果存在,就会创建到已经存在的这个栈中。

d. singleInstance。具有此种模式的Activity只能单独存在于一个任务栈。

(5) 标识Activity任务栈名称的属性:TaskAffinity,默认为应用包名。

(6) IntentFilter匹配规则。

a. action匹配规则:要求intent中的action存在且必须和过滤规则中的其中一个相同 区分大小写;

b. category匹配规则:系统会默认加上一个android.intent.category.DEAFAULT,所以intent中可以不存在category,但如果存在就必须匹配其中一个;

c. data匹配规则:data由两部分组成,mimeType和URI,要求和action相似。如果没有指定URI,URI但默认值为content和file(schema)

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

推荐阅读更多精彩内容