Activity生命周期,任务栈和启动模式

Activity四个状态

1.处于前台的Activity,可见的,可以与用户交互的。

2.可见的却不能操作,只有系统内存资源紧缺时,才会收回此activity。比如部分遮挡,当你打算操作下面的应用,下面的应用便置为顶部,成为状态1。被部分遮挡的activity便是处于状态2。还有可能有一个透明的应用覆盖原来的activity。

3.activity完全被其它的activity挡住,不可见也不可被操作,一旦系统缺资源,它的资源经常被系统回收,进入状态4。

4.销毁状态,为了节约内存,activity被系统杀死。Activity被系统杀死,或调用finish方法。

onCreate 当activity创建的时候。

onStart    走完这个方法,activity就可以被看到。

onResume 走完这个方法,可见可操作。

onPause 处于暂停状态,可见不可操作。

onStop 处于停止状态,不可见不可操作。

onDestory 处于销毁状态,activity被销毁。

从前台状态到停止状态,onPause  onStop

从onstop执行后,回到前台, onrestart()  onstart()  onresume()


比较常见的用途是,操作数据库时,若是在本页面频繁使用数据库,则数据库不急着关闭资源,随时可以使用,等到页面关闭时,在调用destroy方法时,关闭资源。

onresume() 加载数据 恢复播放的状态。

onstop() 可以在这个方法中,停止所有关于刷新界面的操作。

ondestory() 释放资源的操作,放在这个方法中,若是资源比较大可以把释放资源操作放在onstop中。

当手机屏幕旋转时,会先销毁本页面,再重建本页面,onPause,onStop,onDestory,onCreat,onStart,onResume。

解决方案:

1.锁定屏幕,禁止旋转,可以在AndroidManifest.xml  activity节点中配置,screenOrientation="portrait"(一直竖直的)  landscape水平方向的。

2.旋转时,不销毁当前页面,但可以修改下当前页面,可以在AndroidManifest.xml  activity节点中配置,configChanges="orientation|screenSize|keyboardHidden" 表示屏幕大小变化 , 方向变化或软键盘隐藏或显示状态改变,会走onConfigurationChanged方法,可以在这个方法里做一些修改操作,而不会销毁页面。


任务栈

当一个新的activity被开启,他会被放在栈顶,只要前一个activity没有退出,它依然不会被关闭,只是放在下面。

只有前面的activity退出,那么这个才会置顶。

默认的启动模式(standard):每次打开一个页面,那么都会置顶,一直累加。

在AndroidManifest.xml中可以修改启动模式,来决定activity在栈中创建实例的方式,activity中修改属性launchMode 可以是:

singleTop : 只要栈顶是这个activity , 则不会再次创建这个activity。(二维码扫描,一系列操作的最后一步,以防止开启多次的情况)

singleTask : 开启这个activity时,若是任务栈中存在singleTask的activity,那么再次开启这个activity不会重新创建一个新的对象 , 而会使这个activity上的activity全部出栈(即清空),使此activity置顶。(应用的主页面可以配置为singleTask)

singleInstance : 这个设备只有单独的实例,会创建一个新的栈,只放置这个activity。(很少使用,浏览器,慎用)



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值