从最近开始打算记录一波关于这本书的感受
搞起来!!!!
资源内存不足导致低优先级的Activity被杀死
优先级基本分为一下三种
1、前台还在显示的Acticity——正在和用户进行交互的Activity优先级最高。
2、可见但是非在前台显示的Activity——比如Activity中弹出一个对话框,
导致Activity可见但是位于后台无法和用户进行交互。
3、后台的Activity——已经被暂停的Activity,比如执行了onStop,】
优先级最低
当系统内存不够的时候。系统就会按照上述的优先级去杀死目标Activity所在的进程。并且通过onSaveInstanceSate和onRestoreInstanceSate来存储和恢复数据。如果一个进程中没有四大组件在运行,那么这个进程很快就会被系统杀死。所以一些后台工作不适合脱离四大组件独自运行在后台。较好的方法就是将后台工作放到service中。
Activity旋转时,可以不重新创建嘛
如果我们在旋转时不想重新创建可以添加configChanges属性添加orientation
这个值
android:configChanges = "orientation"
Activity四种启动模式
在任务栈中是一种后进先出的一种栈结构
1、standard 标准模式
这是一种系统的默认模式,每次创建都会去创建相对应的Activity实例,
它的生命周期呢,onCreate->onStart->onResume都会被调用
2、singleTop 栈顶复用模式
这种模式,如果新的Activity已经位于栈顶,那么Activity不会被重新创建,
同时会调用onNewIntent方法,通过这个方法参数,可以获得当前请求的消息
需要注意的是这个Activity生命周期不会走onCreate和onStart
3、singleTask 栈内复用模式,这是一种单实例模式
只要Activity在栈中存在,那么就不会去创建实例。
比如Activity A,系统会先找A想在的任务栈,如果不存在就会创建一个任务栈,
如果想在的任务栈存在,就会去查找有没有A的实例,如果有就会把上面的实例清
空,并且调用onNewIntent,生命周期和singleTop一致,如果实例不存在。就会创
建一个实例。
4、singleInstance 单实例模式
比如Activity A是singleInstancemm模式,当A启动后,系统会为它创建一个新的
任务栈,A独自在这个新的任务栈中,由于栈内复用的特性,后续的请求均不会
创建新的Activity,除非这个独特的任务栈被系统销毁了。
后续还会继续更新