Android 01--Activity

知识结构图

1.Activity

Android里的四大组件之一,可称为界面活动,即用户与app的交互接口。(但是非唯一,用户还可见window,dialog与Toast)

2.状态

Active:正在运行状态,且获取了焦点,处于顶层,用户可见;

Paused:暂停状态,失去焦点,不处于顶层,但是用户仍可见,内存里面的成员变量,状态信息等仍然存在。如在Activity上弹现一个dialog;

Stopped:停止状态,此时用户已不可见,但是内存里的成员变量,状态信息等仍旧存在。场景比如:跳转到新的Activity,旧的Activity处于的状态;

Killed:已经被销毁的Activity才处于killed状态,它的内存里面的成员变量,状态信息等都会被一并回收。

3.生命周期


生命周期图

onCreat:Activity正被创建,如果走OnReStoreInstanceState,则这里拿到的intent就是其对应存储的intent。此方法一般用于setContentView去家在指定布局资源,初始化数据等;

OnRestart:从新的Aty或者应用跳转,再back回来,就会执行,其执行时机在onStart之前,本身Aty从不可见到可见状态;

OnStart:Aty正在被启动,即将开始,本身Aty(仍旧在后台)已经"可见",但是还未显示给用户,即用户还不可交互;

OnResume:Aty已经可见,且出现在前台可与用户交互了;

OnPause:Aty正在停止,可做一些数据回收与动画停止,不可做耗时操作;

OnStop:Aty即将停止,可做一些稍微重量级一点的工作,但是也不可以太耗时。注意:当本身Aty采用了透明主题,Aty跳转或者切换到桌面时候,不走该方法

OnDestory:Aty即将销毁,生命周期中最后一个回调,常用做一些回收工作和最终资源释放;

常见场景:

Activity启动–>onCreate()–>onStart()–>onResume()

  点击home键回到桌面–>onPause()–>onStop()

  再次回到原Activity时–>onRestart()–>onStart()–>onResume()

  退出当前Activity时–>onPause()–>onStop()–>onDestroy()

一些特殊情况下的生命周期:

Aty横竖屏切换(android:configChanges属性有影响)、什么时候Activity单独走onPause()不走onStop()、什么时候导致Activity的onDestory()不执行等

生命周期对应活动场景解释,详见参考博文

4.启动方式与优先级

    Activity的启动由Intent出发,Intent又分成显式Intent与隐式Intent,显式则是明确指向某个Activity,隐式则指向一个或者多个目标activity(当然也可能没有符合的Activity可以处理这个隐式Intent)

Activity的优先级:

优先级最高: 与用户正在进行交互的Activity,即前台Activity。

优先级中等:可见但非前台的Activity,比如:一个弹出对话框的Activity,可见但是非前台运行。

优先级最低:完全存在与后台的Activity,比如:执行了onStop。

    同时,如果一个进程中没有四大组件的执行,那么这个进程将很快被系统杀死,因此,一些后台工作不适合脱离四大组件独立运行在后台中,这样进程更容易被杀死。比较好的方法就是将后台工作放入Service中从而保证进程有一定的优先级,这样就不会轻易地被系统杀死。

进程的优先级

  前台>可见>服务>后台>空

  前台:与当前用户正在交互的Activity所在的进程。

  可见:Activity可见但是没有在前台所在的进程。

  服务:Activity在后台开启了Service服务所在的进程。

  后台:Activity完全处于后台所在的进程。

  空:没有任何Activity存在的进程,优先级也是最低的。

5.任务栈与启动模式

    任务栈:是Android中用于存储活动(Activity)实例的一种数据结构,Aty的跳转与回调等都与这个栈有关;

    启动模式:Activity具有四种启动模式,包括standard(默认)、singleTop、singleTask、singleInstance;

standard(默认):每次启动一个Activity都会创建一个新的实例,无论它是否已经存在。因此同一个任务栈里可以有多个实例。注意:如果采用非Activity类型的Context(如ApplicationContext)启动该模式的Activity会报错,因为这种Context并没有任务栈;

singleTop:栈顶复用模式,当该模式下的Activity处于栈顶,则不会重建,否则就进行重建。注意,当不重建时候,Activity会调用OnNewIntent方法,不会调用OnCreat与OnStart;

singleTask:栈内复用模式,一种单实例模式。该模式的Activity启动,会现寻找其所要的任务栈,如果没有创栈且创建Activity放入。如果有符合的栈但是没有实例,创建Activity实例放入该栈栈顶。当存在符合栈且栈内具有该Activity实例,则清除栈中该Activity上面的所有实例(Activity),切换到栈顶后调用OnNewIntent,不会调用OnCreat与OnStart;

singleInstance:单实例模式,强化版singleTask模式,具有其所有特性。其实例只能单独地位于一个栈中,启动它则要创建一个新的任务栈。

6.通信方式

Activity组件之间的:[1]Intent/Bundle    [2]类静态变量    [3]全局变量

Activity->Service:[1]绑定服务的方式,利用ServiceConnection这个接口    [2]Intent    [3]CallBack + Handler,监听服务的进程变化

Activity->Fragment:[1]Bundle   [2]直接进行方法调用


---------------------

参考书籍:《Android开发艺术探索》

参考博文:

作者:ClAndEllen  来源:CSDN   题目:Android知识体系总结之Android部分Activity篇

链接:https://blog.csdn.net/clandellen/article/details/79257489

---------------------

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