今天复习Android四大组件Activity、Service、BroadcastReceiver、ContentProvide
一、Activity
1.Activity是什么?
Activity是一种展示型组件,主要是向用户展示一个界面,并且可以接收用户的输入信息从而和用户进行交互。每个活动都有一个窗口,用于绘制其用户界面。窗口通常填满屏幕,但可能比屏幕小,并漂浮在其他窗口的顶部。例如:"android:theme="@android:style/Theme.Dialog" 将一个Activity显示为对话框模式
2.Activity生命周期
- 正常情况下,Activity的常用生命周期就只有如下7个:
onCreate()
:表示Activity正在被创建,常用来初始化工作,比如调用setContentView加载界面布局资源,初始化Activity所需数据等,不可见;
onRestart()
:表示Activity正在重新启动,一般情况下,当前Acitivty从不可见重新变为可见时,OnRestart就会被调用;
onStart()
:表示Activity正在被启动,此时Activity可见但不在前台,还处于后台,无法与用户交互;
onResume()
:表示Activity获得焦点,此时Activity可见且在前台并开始活动,这是与onStart的区别所在;
onPause()
:表示Activity正在停止,此时可做一些存储数据、停止动画等工作,但是不能太耗时,因为这会影响到新Activity的显示,onPause必须先执行完,新Activity的onResume才会执行,可见;
onStop()
:表示Activity即将停止,可以做一些稍微重量级的回收工作,比如注销广播接收器、关闭网络连接等,同样不能太耗时,不可见;
onDestroy()
:表示Activity即将被销毁,这是Activity生命周期中的最后一个回调,常做回收工作、资源释放;
- 其中切换Activity时各方法的执行次序是:
(A)onPause→(B)onCreate→(B)onStart→(B)onResume→(A)onStop
1.一个Activity或多或少会占有系统资源,而在官方的建议中,onPause方法将会释放掉很多系统资源,为切换Activity提供流畅性的保障,而不需要再等多两个阶段,这样做切换更快。
2.按照生命周期图的表示,如果用户在切换Activity的过程中再次切回原Activity,是在onPause方法后直接调用onResume方法的,这样比onPause→onStop→onRestart→onStart→onResume要快得多。
- 与生命周期密切相关的onSaveInstanceState方法和onRestoreInstanceState方法在什么时候执行?
onSaveInstanceState
:(1)在Activity被覆盖或退居后台之后,系统资源不足将其杀死,此方法会被调用;(2)在用户改变屏幕方向时,此方法会被调用;(3)在当前Activity跳转到其他Activity或者按Home键回到主屏,自身退居后台时,此方法会被调用。第一种情况我们无法保证什么时候发生,系统根据资源紧张程度去调度;第二种是屏幕翻转方向时,系统先销毁当前的Activity,然后再重建一个新的,调用此方法时,我们可以保存一些临时数据;第三种情况系统调用此方法是为了保存当前窗口各个View组件的状态。onSaveInstanceState的调用顺序是在onPause之前。
onRestoreInstanceState
:(1)在Activity被覆盖或退居后台之后,系统资源不足将其杀死,然后用户又回到了此Activity,此方法会被调用;(2)在用户改变屏幕方向时,重建的过程中,此方法会被调用。我们可以重写此方法,以便可以恢复一些临时数据。onRestoreInstanceState的调用顺序是在onStart之后。
-
onNewIntent()触发机制
onNewIntent()触发机制.png
Android的四种启动模式中,提到了Activity的四种启动模式,在启动模式singleTask和singleTop中,由于系统会判断返回栈中是否存在实例,若存在(singleTop还要求处于栈顶)实例,那么系统会将请求发送到该实例上,因此不会调用常规的onCreate方法,而是调用onNewIntent方法。
网友评论