Activity 的生命周期之典型情况(复习笔记一)

来源:互联网 发布:linux 下安装vsftpd 编辑:程序博客网 时间:2024/06/07 02:55

前言:这段时间有点浮躁,学习的路子有点弯了,总是很在意去看框架的实现原理!其实看得很累,很多基础性的东西都看得云里雾里的!后来组长说了一句,其实所有的框架都离不开android本身的基础api。对!当你自认为一定要了解到第三方的框架之后,才算是一个技术NB的大神的时候,你错了,其实,当你对android基础行的东西(我这里只是说应用层,源代码级别的。。。。)理解透切了,才真算是一个合格的android程序员!

(卖个小广告)复习笔记系列所有的内容我都是取之于《Android艺术探索》,有可能只是笔记,有可能取其中一段归纳,我只当是自己学习笔记,能给大家帮助也更好!艺术探索探索这本书我之前已经看过一遍,对于理解一些android流程性的东西,和一些面试理论都有很好的帮助。然后在看第二遍的时候,觉得不留下什么东西下来会记不住,大家可以跟着我的笔记往前走,也可以去京东把书买下来边看边自己总结。日积月累,总会成为自己心目中的大神。不多说,上内容!

一、Activity的生命周期全面分析

1.1、典型情况的生命周期:在正常情况下,Activity会经历如下生命周期

1)、onCreate:表示Activity正在创建,这是生命周期的第一个方法。在这个方法中,我们可以做一些初始化工作,比如setContentView去加载界面布局、初始化Activity所需要的数据。

2)、onRestart:表示Activity正在重新启动。一般情况下,当当全前Activity从不可见重新变为可见状态时,onRestart就会被调用。这种情形一般是用户行为所导致的,比如用户按home键切换到桌面或者用户打开了一个新的Activity,这是当前的Activity就会暂停,也就是onPause和onStop被执行了,接着用户又回到了这个Activity,onRestart就会被调用。

3)、onStart:表示Activity正在被启动,即将开始,这时Activity已经可见了,但是还没有出现在前台,还无法和用户交互。这个时候其实可以理解为Activity已经显示出来了,但是我们还没有看到。

4)、onResume:表示Activity已经可见了,并且出现在前台并开始活动。要注意这个和onStart的对比,onStart和onResume都表示Activity已经可见,但是onStart的时候Activity还在后台,onResume的时候Activity才显示到前台。

5)、onPause:表示Activity正在停止,正常情况下,紧接着onStop就会被调用。在特俗情况下,如果这个时候快速地再回到当前Activity,那么onResume会被调用。笔者的理解是,这种情况属于与极端情况,用户操作很难重现这一场景。此时可以做一些存储数据、停止动画等工作,但是注意不能太耗时,因为这会影响新Activity的显示,onPause必须先执行完,新Activity的onResume才会执行。

6)、onStop:表示Activity即将停止,可以做一些稍微重量级的回收工作,同样不能太耗时。

7)、onDestroy:表示Activity即将被销毁,这是Activity生命周期最后一个回调,在这里我们可以做一些回收工作和最终的资源释放。

正常情况下,Activity的常用生命周期就只有上面7个,下面出现一个生命周期图,在很多博客上都会出现:
Activity生命周期的切换过程

针对图,这里在附加一下具体说明,分如下几种情况

1)、针对一个特定的Activity,第一次启动,回调如下:onCreate -> onStart -> onResume2)、当用户打开新的Activity或者切换到桌面的时候,回调如下:onPause -> onStop -> 。这里有一种特殊情况,如果新Activity采用了透明主题,那么当前的Activity不会回调onStop3)、当用户再次回到原Activity时,回调如下:onRestart -> onStart -> onResume 4)、当用户按back回退时,回调如下:onPause -> onStop -> onDestroy5)、当Activity被系统回收后再次打开,生命周期方法回调过程和(1)一样,注意是生命周期方法一样,不代表所有过程一样。

这里提出两个问题,不知道大家是否清楚。

问题1:onStart和onResume、onPause和onStop从描述上看差不多,对我们来说有什么实质的不同呢?问题2:假设当前的Activity为A,如果这是用户打开一个新的ActivityB,那么B的onResume和A的onPause哪个先执行呢?

要下班了,异常情况的生命周期,明天继续!!!

0 0
原创粉丝点击