Android基础之Activity
一、正常情况下Activity的生命周期
(1)onCreate(),Activity被启动的第一个方法,创建Activity。
(2)onStart(),Activity被启动,还在后台,这时Activity可见,但是不能交互。
(3)static onResume(),Activity来到前台和用户进行交互。
(4)static onPause(),Activity暂停,该状态下被另一Activity遮盖,但不会被完全覆盖,不再能进行交互。
(5)static onStop(),Activity被完全隐藏,用户不可见。其状态信息会被保存。
(6)onRestart(),Activity从不可见变为可见时调用。调用顺序:(6)->(2)->(3)
(7)onDestroy(),Activity被销毁。
注意:(3)(4)(5)三个方法是静态的,可以存在较长时间。
二、异常情况下的生命周期分析。
(1)系统相关配置发生改变,Activity被杀死重建。
(2)内存不足,低优先级Activity被杀死
在onStop()之前调用onSavedInstanceState方法保存当前Activity的状态(Bundle对象)。
当Activity被重新创建后,系统会在onStart()后调用onRestoreInstanceState(),把保存的Bundle对象传递给该方法及onCreate()。
三、当前Activity启动另一个Activity时
按Back键返回时
四、Activity的加载模式
(1)标准模式(Standard)
系统默认,每次启动一个Activity都会重新创建一个新的Activity实例,不管是否已经存在,谁启动的这个Activity,这个Activity就运行在启动它的那个Activity的任务栈中。
(2)栈顶服用模式(singleTop)
Activity会创建在启动它的Activity任务栈中,如果其已经位于栈顶,则不会重复创建,并且onNewIntent会被调用。
如果其不位于栈顶,还会创建一个新的实例。
(3)栈内复用模式(singleTask)
启动前先寻找是否有A想要的任务栈,如果栈存在,就看任务栈中是否有A,如果有就clearTop,把A推到栈顶,并且调用onNewIntent;如果没有A,就创建A在栈顶。注意,如果有存在A的任务栈,那么任务栈自动切换到前台,如果不存在,就创建A所需要的任务栈并且创建A入栈。
(4)单例模式(singleInstance)
无论从哪里启动,都会给A创建一个唯一的任务栈,后续的创建都不会再创建新的A,除非A被销毁了。