Android生命周期和启动模式
Android生命周期和启动模式
1、Android生命周期
1.1、正常情况下的生命周期
1、onCreate() Activtiy正在创建,做初始化,调用setContentView初始化布局资源
2、onRestart() Activity被重新启动,这种情况一般是用户把Activtiy切回后台,之后又切回来
3、onStart() Activity正在被启动,这时候Activtiy已经可见,但是还没有显示到前台
4、onResume() Activity已经可见了,已经显示到前台
5、onPause() Activtiy正在停止,紧接着会执行onStop,切在此阶段勿做耗时操作
6、onStop() Activtiy正在被停止,可以做写微重量级的操作
7、onDestroy() Activtiy已经被销毁,回收工作与资源释放
分几种情况:
1、当用户打开新的Activity切换到桌面,正常为onPause--onStop,如果新的Activtiy是透明的话,当前Activity不会执 行onSop
2、当用户按下back键回退时候,onPause--onStop--onDestroy
1.2、非正常情况下的生命周期
1、资源的相关的系统配置发生导致Activtiy被杀死并重新被创建
系统突然旋转屏幕,当系统配置发生改变的时候, 在默认情况下,比如当前Activity处于竖着的屏幕的时候,突然旋转,会导致Activtiy生命周期发生改变。当Activtiy在异常情况下终止的,所以系统会调用onSaveInstanceState来保存当前数据Activtiy,这个是在OnStop之前,在新建Activtiy的时候,在OnCreate方法会执行onRestoreInStanceState恢复数据。当正常情况下,Activity不会调用onSaveInstanceState。
2、资源内存不足导致低优先级的Activtiy被杀死
1、前台-->可见-->服务-->后台-->空 (优先级顺序,从高到低,当资源内存不足的情况下,系统会依照优先级顺序进行回收),但有时候一些后台任务如果脱离四大组件,很容易被杀死,所有我们可以在服务中来保持优先级,避免被杀死
2、Andorid启动模式
2.1、标准模式(standard)
默认的启动模式,不管栈中是否有实例存在,每次调用都会新建一个
2.2、栈顶模式 (singleTop)
栈顶复用,如果调用时栈顶是此Activity的实例,那么复用,否则在栈顶新建一个
2.3、栈内模式 (singleTask)
如果栈内存在此Activtiy实例,则会清除此实例上面的所有实例。
2.4、复用模式 (singleInstance)
全局单例模式,单独占用一个栈,是singleTask的加强版。具有singleTask的相关属性。此模式一般为系统中的应用,一般不会用到
2.5、onNewIntent()方法
ActivityA已经启动过,处于当前应用的Activity堆栈中; 当ActivityA的LaunchMode为SingleTop时,如果ActivityA在栈顶,且现在要再启动ActivityA,这时会调用onNewIntent()方法 当ActivityA的LaunchMode为SingleInstance,SingleTask时,如果已经ActivityA已经在堆栈中,那么此时会调用onNewIntent()方法 当ActivityA的LaunchMode为Standard时,由于每次启动ActivityA都是启动新的实例,和原来启动的没关系,所以不会调用原来ActivityA的onNewIntent方法
3、Android IntentFilter的匹配规则
Intent分为显示跳转和隐式跳转,显式跳转比较简单,根据规则即可,所以这里主要说隐式跳转,
更多相关文章
- Android 之Service的使用及生命周期
- Android开发模式:MVP Vs MVVM
- Android源码阅读分析:Activity生命周期
- Android的布局和Intent笔记和常用实例
- Android设计模式系列--工厂方法模式
- 新书内容连载(2):Android Activity的生命周期
- Activity 的四种加载模式