Android学习之路(一)-Activity的生命周期和启动模式-1

近期打算系统的学习和更深入的了解Android,所以新建了这个Android学习之路来记录一下自己对于Android新的认识和了解,也当作是学习的一个记录~

(一)Activity的生命周期和启动模式

(1)Activity的生命周期全面解析

Activity作为四大组件之一,我认为它是最不可忽视的一个,因为在除了Window,Diaog和 Toast,我们能看到的和接触到的的确更多的只有Activity,所以对Activity的认知不止停留于如何启动Activity这一块,我们要学习Activity在使用过程中的一些问题和概念,主要包括生命周期和启动模式,在书中有介绍Activity的生命周期分两种,为典型情况下的生命周期和异常情况下的生命周期,所谓典型情况就是在有用户参与的情况下对Activity一系列的操作引起的Activity生命周期的变化,而异常情况指的是由于当前设备的Configuration(配置)发生改变从而导致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还没出现在前台,但是它已经可见了,只是它还无法和用户交互,可以理解它已经在显示出来的边缘,即将开始,只是我们还看不到它。

(4)onResume:表示Activity已经可见了,并且已经出现在前台,可以和用户进行交互了。(这里顺带提一下,要注意onStart和OnResume的对比,onStart和onResume都表示Activity已经可见了,但是onStart的时候Activity还在后台,onResume的时候Activity才在前台显示出来,要区分好这两种状态的区别。)

(5)onPause:表示Activity正在停止。正常情况下,调用了onPause后onStop会被调用。在这个方法里可以做一些存储数据,停止动画的操作,但是要注意不要太过于耗时,因为会影响到新的Activity的显示速度,在Android的源码中,onPause必须先执行完毕,新Activity的onResume才会被执行。

(6)onStop:表示Activity即将停止。可以做一些稍微重量级的操作,同样注意不要过于耗时。

(7)onDestory:表示Activity即将被销毁。这是Activity生命周期中的最后一个回调方法,通常我们可以在这里做一些资源的释放操作和一些回收工作。

下图可以形象的看出Activity的生命周期活动过程:


另外有几点需要注意的:

(1)在这个图中,一个Activity在第一次启动,回调如下:onCreate-onStart-onResume。

(2)当用户打开一个新的Activity或者切换回到桌面的时候,回调如下:onPause-onStop。但是有几种特殊的情况,会导致当前的Activity不会回调onStop,一个是当Activity被一个透明的Activity覆盖,或者是新Activity使用了透明主题,这时不执行onstop()方法,一个是当 Activity 被另外一个 Activity 覆盖、失去焦点并不可见时处于 Stoped 状态,还有一个是当 Activity 被另一个透明或者 Dialog 样式的 Activity 覆盖时的状态。此时它依然与窗口管理器保持连接,系统继续维护其内部状态,所以它仍然可见,但它已经失去了焦点故不可与用户交互,所以被覆盖的Activity并不会执行onStop()方法。

(3)当用户重新回到原来的Activity的时候,回调如下:onRestart-onStart-onResume。

(4)当用户按back键回退的时候,回调如下:onPause-onStop-onDestory。

(5)当Activity被系统回收后被再次打开,生命周期的回调与(1)一样,当然只是生命周期方法一样,具体过程不代表都一样~


在实际使用过程中,onStart和onStop是从Activity是否可见这个角度来回调的,而onResume和onPause是从Activity是否处于前台并且可活动可交互的这个角度来回调的,除了这个区别之外在使用过程中没有其他明显的区别。


本人为在校学生,只能一点点慢慢复习积累,内容为手打,目的是为了加强自己的理解,里面也加入了我个人的一些理解,有其他不同的见解或者里面有错误都欢迎指教和指出~




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值