安卓activity的基础知识

Activity的生命周期和启动模式

一. Activity的生命周期


1. 完整生存期
活动在
onCreate()方法和 onDestroy()方法之间所经历的,就是完整生存期。一般情
况下,一个活动会在
onCreate()方法中完成各种初始化操作,而在 onDestroy()方法中完
成释放内存的操作。


2. 可见生存期
活动在
onStart()方法和 onStop()方法之间所经历的,就是可见生存期。在可见生存
期内,活动对于用户总是可见的,即便有可能无法和用户进行交互。我们可以通过这两
个方法,合理地管理那些对用户可见的资源。比如在
onStart()方法中对资源进行加载,
而在
onStop()方法中对资源进行释放, 从而保证处于停止状态的活动不会占用过多内存。


3. 前台生存期
活动在
onResume()方法和 onPause()方法之间所经历的,就是前台生存期。在前台
生存期内,活动总是处于运行状态的,此时的活动是可以和用户进行相互的,我们平时
看到和接触最多的也这个状态下的活动。
(有窗口活动时)


二、Activity得启动模式

1.standard 系统的默认模式
standard 模式(即默认情况)下,每当启动一个新的活动,它就会在返回栈中入栈,并处于栈顶的位置。对于使用
standard 模式的活动,系统不会在乎这个活动是否已经在返回栈中存在,每次启动都会创建该活动的一个新的实例。

                        2. singleTop 当活动的启动模式
指定为
singleTop,在启动活动时如果发现返回栈的栈顶已经是该活动,则认为可以直接使用
它,不会再创建新的活动实例。但是当前活动如果不在栈顶,还是会重新创建活动的。
3.singleTask
当活动的启动模式指定为 singleTask,每次启动该活动时系统首先
会在返回栈中检查是否存在该活动的实例,如果发现已经存在则直接使用该实例,并把在这
个活动之上的所有活动统统出栈,如果没有发现就会创建一个新的活动实例。
4. singleInstance
指定为 singleInstance 模式的活动会启用一
个新的返回栈来管理这个活动(其实如果
singleTask 模式指定了不同的 taskAffinity,也会启
动一个新的返回栈)



图中的活动2 就新开了活动栈

按下 Back 键进行返回, 发现 ThirdActivity 直接返回到了 FirstActivity
再按下
Back 键又会返回到 SecondActivity,再按下 Back 键才会退出程序,这是为什么呢?
其实原理很简单,由于
FirstActivity ThirdActivity 是存放在同一个返回栈里的,当在
ThirdActivity 的界面按下 Back 键,ThirdActivity 会从返回栈中出栈,那么 FirstActivity 就成
为了栈顶活动显示在界面上,因此也就出现了从
ThirdActivity 直接返回到 FirstActivity 的情
况。然后在
FirstActivity 界面再次按下 Back 键,这时当前的返回栈已经空了,于是就显示了
另一个返回栈的栈顶活动,即
SecondActivity。最后再次按下 Back 键,这时所有返回栈都已
经空了,也就自然退出了程序






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值