Android基础之Activity

一、正常情况下Activity的生命周期

Android基础之Activity_第1张图片

(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时

Android基础之Activity_第2张图片

按Back键返回时

Android基础之Activity_第3张图片

四、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被销毁了。

 

你可能感兴趣的:(Android)