简单深入了解Activity

今天深入了解一下Activity组件。

Activity的状态情况通常情况下系统会自动保存,只有当我们需要保存额外的数据的时候才需要用到这样的功能。

调用onPause()和onStop()方法后的Activity实例仍然保存在内存中,所以Activity的信息和状态是不会消失的,当activity从后台转变成前台之后,所有的改变都会得到保留。

当内存不足的时候,系统可能会回收Activity并摧毁,此时内存就不会有了Activity的实例对象了,为了避免情况,我们可以选择性的覆写OnSaveInstanceState(),接受一个Bundle参数,开发者可以将状态存储到这个Bundle的对象当中,万一中途系统急刹车,将Acitivity销毁了,用户重新启动该Activity并且调用onCreate(),bundle就会传回去数据,回到被销毁之前的状态了。


---------------------------------------------------------------------------------------------------------------------


Activity四种启动模式。

1.standard

2.singleTop

3.singleTask

4.singleInstance

首先我们要知道的是,Activity实例是存在于任务栈里的,既然是栈,具有先进先出(FIFO)的特点。好比一把手枪上子弹,先进去的子弹先出来是一个意思。


1、standard(标准模式)

系统默认的启动模式,启动一个activity时,不管栈里面存不存在这个实例,系统都会为它新建一个activity实例,压入栈里。

2、singleTop(栈顶复用模式)

启动一个activity的时候,如果当前的activity在栈顶,那么系统就不会去再一次创建这个activity实例了,而是直接调用栈顶的activity的onNewIntent()。


3、singleTask(栈内复用模式)

这个启动模式是相对于其他应用的activity,当只有启动其他activity的时候才会创建一个新的任务栈。系统会创建一个新的任务,并将新的activity放入到这个新的栈的底部,就是栈底。如果已经存在就不在创建这个实例了。


4、singleInstance(单实例模式)

这种启动模式和singletask有点相似,当一个activity被声明成singleinstance。那系统不会再往被声明成singleInstance的任务里面再添加新的activity。也就是说一个栈里面只有一个activity也就是被声明的。


-------------------------------------------------------------------------------------------------------------------

singleTop和standard模式的区别就是,singleTop是不再创建一个已经创建过的activity实例了,当跳转的对象就是位于栈顶的activity,系统不会再生成一个新的activity实例。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值