方法 | 含义 | 作用 |
---|---|---|
onCreate | 表示Activity正在被创建 | 进行一些初始化的工作,如调用setContentView加载布局资源,初始化activity所需要的数据等 |
onRestart | 表示Activity被重新启动 | 当当前Activity由不可见变成可见的时候会执行该方法,如用户启动新Activity或回到桌面等 |
onStart | 表示Activity正在被启动 | 这个阶段Activity已经处于可见状态,但是还没有出现在前台,无法和用户进行交互,可以简单的理解为Activity已经处于可见状态但是用户看不见 |
onResume | 表示Activity已经可见,且可以进行交互了 | Activity可见,出现在前台并开始活动,注意onRestart时,还处于后台 |
onPause | 表示Activity正在停止 | 紧接着onStop方法调用,特殊情况下,如果快速的回到当前Activity,则onResume方法会被调用,在这里可以做一些动画停止、数据存储等一些操作,但是不能执行耗时操作,原因:当前Activity的onPause方法被执行完,新Activity方法的onResume方法才会被执行 |
onStop | 表示Activity即将停止 | 在这里可以进行一些轻量级的资源回收工作 |
onDestroy | 表示Activity即将被销毁 | 是Activity的生命周期的最后一个回调,在这里进行最终的资源释放及回收工作 |
注意:
onStart和onResume以及onPause和onStop虽然看起来差不多,但是它们所代表的具体含义不同,具体来说onStart和onPause是代表Activity是否可见,而onResume及onStop表示Activity是否位于前台。
当发生旋转屏幕、窗口大小改变、深色模式切换等操作时,系统为拿到不同模式下的资源配置,在默认情况下会导致Activity销毁被重新创建,除非设置了阻止它重建。销毁创建的具体过程如下图所示。
在意外销毁时会通过onSaveInstanceState保存当前Activity状态,同时,将保存的数据通过bundle传给onCreate方法和onRestoreInstanceState方法,而后通过onCreate或onRestoreInstanceState方法把该Activity销毁时保存的数据重新读取。
注意
恢复过程基本和situation 1一致,在内存不足时,安卓优先级从低到高杀死目标Activity所在的进程,并通过onSaveInstanceState和onRestoreInstanceState保存和恢复数据。
Activity优先级定义:
1.前台Activity:正在和用户交互的Activity,优先级最高;
2.可见但非前台Activity;如弹窗导致Activity无法交互等;
3.位于后台的Activity,该Activity已经被暂停,优先级最低。
注意:为避免被杀,一些后台工作不能脱离四大组件运行,如一个进程没有四大组件运行,可能将会很快被杀死。
当前的四种启动模式:
关于action、category的匹配规则不详细描述,只说明:action匹配的时候,Intent中所有声明的action只要其中之一匹配就可以,对于category则需要全部匹配。
data的匹配规则与action的匹配规则类似,data的数据结构如下所示,其由mimeType和URI组成:
<data
android:host="string"
android:mimeType="string"
android:pathPattern="string"
android:pathPrefix="string"
android:port="string"
android:path="string"
android:scheme="string" />
mimeType指媒体类型,如image/jpeg等,其它则组成URI,其中pathPattern代表可以包含通配符的路径,path表示完整路径信息,pathPrefix代表路径前缀,注意要为intent指定完整的data,则必须调用setDataAndType方法,不能单独设置,否则可能会导致前一个设置置空。