Activity的生命周期以及四种形态

1 Activity 是与用户交互的第一接口, 通过setContentView(View)方法来给该Activity指定一个显示界面, 并以此为基础提供给用户交互接口. 另外 系统是采用Activity栈来管理Activity的.
2 四种形态

  • Runing/Active
    此时Activity 处在Activity栈的最顶层, 处于屏幕最前方,可与用户进行交互 .此时处于运行状态;
  • Paused
    Activity失去了焦点, 被一个新的非全屏的Activity 或者一个透明的Activity放置在栈顶时,该Activity转化为Pasued形态, 不可与用户交互, 但是所有的信息,变量都还保持着, 当系统内存极低的情况下 ,才会被系统回收.此时处于暂停状态;
  • Stopped
    该Activity完全被另一个Activity覆盖,该Activity转化为Stopped形态,此时它不可见,但是信息,变量都还保持着,此时处于停止状态;
  • Killed
    当Activity被系统回收,或者从来没有创建过,Activity处于Killed形态,此时处于销毁状态;
    结论: Activity对于开发者来说,可以控制它的”生”,但是不能控制它的”死”

3 Activity生命周期
Activity生命周期的流程图
这里写图片描述

Activity只有三个稳定的生命周期状态,其他状态都是过度状态,很快会结束.

. Resumed
这个状态就是Activity的Running状态
. Paused
当Activity一部分被挡住,就会进入这个状态,不接受用户输入
. Stopped
当Activity完全被覆盖,就会进入这个状态,仅在后台运行
分析图中的数字标注

1) 该Activity的运行时期,与用户可交互,在栈的最顶端.
2) 其他的Activity覆盖或者一部分覆盖,都会使得当前Activity回调onPasue方法,释放系统资源,比如 sensor, Camera,receiver等等.Activity部分不可见的时候,有两个情况,从部分不可见到可见,既用户return到该Activity时,也就是图中标注5的情况,此时该Activity会重新回到onResume的可见可交互的状态;另一种情况是从部分不可见到完全不可见,也就是图中标注3的情况,此时该Activity会进入onStop状态
3) 该Activity处于onStop状态时,有三种后续可能,

  • 当用户根据导航操作再次回到该Activity的时候,会经过onReStart()–>onStart()–>onResume()使得用户重新可见该Activity;
  • 按返回键等操作主动finish该Activity或者系统内存极为紧张时需要回收该Activity的时候,该Activity进入到onDestroy的销毁状态,也就是图中标注的4情况;
  • 系统需要更多的空间用于其他application时,系统会回收当前的Activity,如图中标注的7,8情况.这个时候,用户只能按照导航操作经过onCreate()重新进入一个新的Activity界面

注: 如果是当前Activity弹出的dialog则不会执行Activity任何生命周期中的方法,只有其它Activity弹出了Dialog或者拦住了当前的Activity才会执行onPause()
重点内容
4 关于onSaveInstanceState()方法

当系统回收Activity的时候,会将它的状态通过onSaveInstanceState()方法保存到Bundle对象中,也可以增加额外的键值存入Bundle对象中以保存Activity的状态.当重新创建Activity的时候,保存的Bundle对象就会传递给Activity的onSaveInstanceState()方法或者onCreate()方法中.
注:如果用户使用了finish()方法结束Activity时,就不会调用onSaveInstanceState()方法.而且Android系统已经默认实现了控件的状态缓存,不需要开发者来实现缓存逻辑.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值