Activity的四种状态
- running 表示当前Activity处于活动状态,处于栈顶,可与用户交互。
- paused 失去焦点,被非全屏Activity或者透明Activity或者弹窗覆盖,可见。
- stoped 被其他Activity完全覆盖,不可见。
- killed Activity被系统回收,内存完全释放。
Activity的生命周期
Activity启动流程
- onCreate:Activity创建的第一个回调方法,用于初始化所需资源,如setContentView等。
- onStart:表示当前Activity正在启动,此时的Activity是可见,但未到前台,因此是不可交互且看不到的。
onResume:此时Activity已经在前台可见,可以与用户进行交互。
此时Activity已处于运行状态
onPause:此方法回调时,表明当前Activity处于停止状态,也就是可见但不可交互的状态。
- onStop:一般在onPause之后调用,表明当前Activity被停止或者被完全覆盖,变为不可见状态,此时Activity是在后台运行的,当Activity处于stop状态时,有可能会因内存紧张而被回收掉。
onDestory:表示当前Activity正在被销毁,生命周期中最后一个回调,可以在此方法中做一些资源释放等操作。
还有一个onRestart单独拿出来说
- onRestart:表示Activity未被销毁重新启动,由不可见状态变为可见状态的时候会调用此方法。一般后面会紧跟着调用onStart——onResume
- 常见场景
- Activity的启动:onCreate–>onStart–onResume
- 点击Home键回到主界面:onPause–>onStop
- 再次回到原Activity:onRestart–>onStart–>onResume
- 退出Activity:onPause–>onStop–>onDestory
Android中进程优先级(由高到低)
- 前台进程:处于和用户正在交互的Activity的进程或其绑定的Service
- 可见进程:处于可见状态但不可与用户交互状态的Activity产生的进程
- 服务进程:后台开启Service后产生的进程
- 后台进程:Activity变为不可见状态时它所占的进程为后台进程,根据内存情况有可能被kill掉
- 空进程:不属于前面任何一种进程,表示没有活跃的组件,优先级最低,可以随时被kill
Activity启动模式
- standard:标准模式,每次创建Activity时,都会重新创建一个Activity实例,将其加入task当中。通过标准模式创建的Activity在创建过程中会重新经过各个生命周期。
- singleTop:栈顶复用模式, 当创建Activity时,如果Task栈顶存在此Activity的实例,则不会去创建而是直接复用该实例。
- singleTask:栈内复用模式,当创建Activity时,如果task栈中存在该Activity的实例,则不会创建,会直接将该Activity移动至栈顶,在移至栈顶的过程中,会将该Activity以上的Activity全部移出栈,此时会回调onNewIntent。
- singleInstance:通过改启动模式启动的Activity,系统会为其单独分配一个Task,独占整个Task。
Android任务栈(Task)
在android中,每个应用启动后,系统都会为其创建一个任务栈来管理Activity。遵守先进先出的原则。
scheme跳转协议
scheme协议是一种页面跳转协议,可以通过手机浏览器、应用内H5页面、还有后台所返回的数据等方式跳转到相应页面,十分灵活。使用时在清单文件中Activity的节点中配置scheme所需要用到的data即可。