Activity组件详解

前言:今天开始我们学习安卓开发中的第一个组件,Activity,今天的内容如下:

  • 目录

  • 1 Activity的概念

  • 2.Activity 的周期

  • 3每个周期应该做的事

  • 4 活动状态

  • 5 执行生命周期的过程

  • 6 Activity的简单使用流程

1. 经查资料:

Activity是一个应用程序的组件,他在屏幕上提供了一个区域,允许用户在上面做一些交互性的操作, 比如打电话,照相,发送邮件,或者显示一个地图!Activity可以理解成一个绘制用户界面的窗口, 而这个窗口可以填满整个屏幕,也可能比屏幕小或者浮动在其他窗口的上方!

从上面这段话,我们可以得到以下信息:

1.Activity用于显示用户界面,用户通过Activity交互完成相关操作

  1. 一个App允许有多个Activity
  • 总结:Activity = 视图 = 所有能看见的东西

2.Activity的生命周期:

————————————————————————————————————
onCreate:创建(配置UI界面)
onStart: 开始(创建资源)
onResume: 继续(用户交互)
onReStart: 重新开始
onPause: 暂停 (保存数据,停止动画的播放)
On stop: 停止 (释放资源)
onDestory: 销毁

3. 生命周期该做的事

  • onCreate()
    声明UI元素,定义成员变量,配置UI等
    尽量少做些事,避免程序启动太久而看不见界面
    一旦onCreate() 操作完成,系统会迅速调用onStart() 与onResume()方法
  • onDestoty()
    需要将该activity彻底移除的信号时,系统会调用这个方法
    大多数app并不需要实现onDestory()这个方法,由于局部类references会随activity的销毁而销毁
    我们的activity应该在onPause(), onStop()中执行清除activity资源的操作
    如果含有onCreate()中创建的后台线程,或是其他有可能导致内存泄漏的的资源,应在onDestory()中清理资源
    在onCreate()中,直接调用finish()方法,系统会直接调用onDestory()方法,跳过其他的声明周期
    不要在 Activity#onDestroy()内执行释放资源的工作,例如一些工作线程的
    销毁和停止,因为 onDestroy()执行的时机可能较晚。可根据实际需要,在
    Activity#onPause()/onStop()中结合 isFinishing()的判断来执行。
  • onPause()
    停止动画或其他运行的的操作,那些都会导致cpu浪费
    提交用户离开时期保存的内容(例如邮箱草稿)
    释放系统资源,Camera,Broadcast Receiver,sensors(传感器,比如GPS) ,以及任何其他影响电量的资源
    不应该保存用户数据到永久存储上 (File或Db中)
    尽量减少onPause() 中的工作量避免切换到下一个activity变得缓慢
    当前Activity的onPause方法执行结束后才会执行下一个Activity的onCreate
    方法,所以在 onPause 方法中不适合做耗时较长的工作,这会影响到页面之间的跳
    转效率。
    在 Activity.onPause()或 Activity.onStop()回调中,关闭当前 activity 正在执
    行的的动画。
  • onResume()
    恢复activity时,应该初始化那些onPause() 释放掉的组件
    执行那些activity每次进入resume state 都需要进行初始化的动作
  • onStop()
    应该释放那些不再需要的所有资源,避免内存泄漏,onStop() 后系统会在需要内存空间时摧毁它的实例
    使用onStop()来执行那些CPU intensive的shut-down操作,例如往数据库写信息
    系统会保存布局中视图的当前状态,例如,可以保存EditText中的文本内容,停止通过Service定时更新UI上的数据的Service
  • onStart()
    在onStop()中里面做了那些清除的操作,就应该做instant中把那些清除掉的资源重新创建出来

4 .活动状态

1.运行状态
2.暂停状态(Resume)
3.停止状态(Restart->Start->Reaume)
4.销毁状态

5 活动生存期

1.完整生存期 onCreate===onDestory
2.可见生存期 onStart===onStop
3.前台生存期 onResume===onPause

6. 解释

1.Android用Activity Stack来管理多个Activity,所以呢,同一时刻只会有最顶上的那个Activity是处于active或者running状态。其它的Activity都被压在下面了。

  1. 如果非活动的Activity仍是可见的(即如果上面压着的是一个非全屏的Activity或透明的Activity),它是处于paused状态的。在系统内存不足的情况下,paused状态的Activity是有可被系统杀掉的。只是不明白,如果它被干掉了,界面上的显示又会变成什么模样?看来下回有必要研究一下这种情况了。

3.几个事件的配对可以比较清楚地理解它们的关系。Create与Destroy配成一对,叫entrie lifetime,在创建时分配资源,则在销毁时释放资源;往上一点还有Start与Stop一对,叫visible lifetime,表达的是可见与非可见这么一个过程;最顶上的就是Resume和Pause这一对了,叫foreground lifetime,表达的了是否处于激活状态的过程。

4.因此,我们实现的Activity派生类,要重载两个重要的方法:onCreate()进行初始化操作,onPause()保存当前操作的结果

7.执行阶段

1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。

2.当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause方法,暂停当前Activity的执行。

3.当前Activity由被覆盖状态回到前台或解锁屏:系统会调用onResume方法,再次进入运行状态。

4.当前Activity转到新的Activity界面或按Home键回到主屏,自身退居后台:系统会先调用onPause方法,然后调用onStop方法,进入停滞状态。

5.用户后退回到此Activity:系统会先调用onRestart方法,然后调用onStart方法,最后调用onResume方法,再次进入运行状态。

6.当前Activity处于被覆盖状态或者后台不可见状态,即第2步和第4步,系统内存不足,杀死当前Activity,而后用户退回当前Activity:再次调用onCreate方法、onStart方法、onResume方法,进入运行状态。

7.用户退出当前Activity:系统先调用onPause方法,然后调用onStop方法,最后调用onDestory方法,结束当前Activity。

执行阶段的图解:


8.Activity的使用流程:

我相信才进入安卓,很多人还不适应,不要心燥,慢慢来,坚持就是胜利。

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