Activity 简析

目录

1.Activity

2.Activity的Intent过滤器

3.Activity状态和生命周期

4.Activity启动模式

5.Activity销毁后的现场恢复

1.Activity

一种可以包含用户界面,和用户进行交互的组件。

可以通过显式Intent、隐式Intent、Scheme跳转协议启动。   

隐式Intent启动活动,Intent指定的action和category与manifest中的声明登都匹配才可以。

如手机网页上可通过 myscheme://main.uri?arg0=value0&arg1=value1启动一个Activity,这个Activity在manifest文件的声明下添加一个如下的intent-filter节点

<intent-filter>

    <action android:name="android.intent.action.VIEW"/>

    <category android:name="android.intent.category.BROWSABLE"/>

    <data android:scheme="myscheme" android:host="main.uri"></data>

</intent-filter>

2.Activity的Intent过滤器

2.1 Intent过滤器的声明

在manifest中声明的activity下配置<intent-filter>节点。可以为一个Activity配置多个intent-filter节点。

intent-filter内的配置action和category用于支持隐式Intent启动活动。同一个intent-filter内category可以配置多个。

data 节点包含 scheme host port path(网址中跟在域名之后的部分,可按不同业务定义不同path) mimeType(可以处理的数据类型)等属性。

2.2 Intent过滤器的使用

为Intent的实例设置action category data等。

3.Activity的状态和生命周期

3.1 Activity的状态

running 运行 在屏幕前台

paused 暂停 失去焦点但仍然对用户可见(被透明Activity遮盖或未完全遮挡)

stopped 停止 完全被另一个Activity覆盖

destroied 退出 销毁

3.2 Activity的生命周期

各阶段回调:onCreate  (onRestart)onStart  onResume  onPause  onStop  onDestroy

完整生存期:onCreate -> onStart -> onResume -> onPause -> onStop -> onDestroy

可见生存期:onStart -> onResume -> onPause(到onStop 方法之前)

前台生存期:onResume (到onPause方法之前)

按Home键(非长按):系统返回到桌面,依次执行onPause -> onStop

按Back键:系统返回到桌面,依次执行onPause -> onStop -> onDestroy

启动B部分遮挡住了A:将依次执行A:onPause -> B:onCreate -> B:onStart -> B:onResume

启动B全部遮挡住了A:将依次执行A:onPause -> B:onCreate -> B:onStart -> B:onResume -> A:onStop

另外,对于singleTask、singleTask、singleInstance 等启动模式下,如果有可复用的实例,会调用onNewIntent()而不是onCreate。

4.Activity启动模式

standard 标准模式

每次都新创建一个实例。

singleTop 栈顶复用

有相同的activity在前台于用户交互,则复用这个Activity,会调用Activity.onNewIntent()。

栈顶不是target Activity,则new一个。

singleTask 站内复用

如果有相同的activity在前台于用户交互,则复用这个Activity,会调用Activity.onNewIntent()。

如果栈顶不是目标Activity,则清除此activty旧实例以上的所有activity。

singleInstance 单例 

intent再次启动这个activity,task会被调到前台,其Activity.onNewIntent() 会被调用开辟一个只允许一个activity实例运行的task。

5.Activity销毁后重建的现场恢复

重写onSaveInstanceState(Bundle outState),将数据保存到outState中。

重写onCreate(Bundle savedInstanceState),如果savedInstanceState不为null,则从中取出数据恢复现场。

onSaveInstanceState的调用时机

1. home键最小化时,在onPause后调用

2. 长按home键,在onPause后调用

3. 屏幕旋转时,在onPause后调用

注:AndroidManifest.xml中设置android:configChanges=”orientation|screenSize”后,旋转屏幕将不会重新调用各个生命周期,当然也不会调用保存数据的方法,只会调用onConfigurationChanged(Configuration newConfig)方法

4. 开启新的Activity,在onPause后调用

5. 补充:Android UI框架中几乎所有的UI控件都实现了onSaveInstanceState()方法,因此当activity被摧毁和重建时, 这些UI控件会自动保存和恢复状态数据,前提是你已经为这个控件指定过ID。

onRestoreInstanceState(Bundle savedInstanceState) 调用的时机

activity“确实”被销毁后,在重建时调用此方法。

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

推荐阅读更多精彩内容