Activity生命周期随想录

前言

读了《Android开发艺术探索》第一章以后,对Activity生命周期有了自己的一些小理解。特此记录

1.生命周期分类

就像书中所说,Activity的生命周期分为两类,一类是典型情况下的生命周期,一类是异常情况下的生命周期

2.关于典型生命周期

值得记录的想法
onStartonStop是从是否可见的角度来回调的,onResumeonPause是从是否可以交互的角度来回调的。
onPause不能做一些太耗时的操作。
为什么呢?因为在一个Activity启动另外一个Activity的时候,生命周期是这样的(比如A启动B)
A:onPause B:onCreate B:onStart B:onResume A:onStop
所以如果在onPause中做了一些太耗时的操作,会影响新Activity的展示。所以不能在onPause中做重量级的操作

3.关于异常生命周期

3.1 Activity被杀死并重新创建

这个一般就是说的横竖屏切换的时候,Activity会销毁重建。
值得记录的想法
onSaveInstanceState的调用时机是在onStop之前,和onPause没有必然关系。onRestoreInstanceState是在onStart之后。和onResume没有必然关系。
②当Activity即将被销毁并且有机会重新显示的话,系统才会去调用onSaveInstanceState。当Activity正常销毁的时候,不会调用。
③如果不想它重新创建,也有办法,就是设置configChanges属性。比如
android:configChanges="orientation"就可以防止在屏幕旋转的时候重新创建。

3.2 内存不够了,低优先级的Activity被杀死

值得记录的想法
①Activity有个优先级,前台Activity(比如onResume阶段的)->可见Activity(比如onStart阶段的)->后台Activity(比如执行了onStop阶段的)。
②当内存不足的时候,就会按照这个优先级去杀死Activity所在进程,后续也是通过调用onSaveInstanceStateonRestoreInstanceState来恢复数据。
③如果一个进程中没有四大组件在执行,那么这个进程将很快被系统杀死。因此,一些后台工作不适合脱离四大组件而独自运行在后台中,这样进程很容易被杀死。比较好的方法是将后台工作放入Service中从而保证进程有一定的优先级,这样就不会被系统轻易杀死。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值