Android四大组件之Activity(一)
从接触Android到现在,最常挂在嘴边的就是Android四大组件。下面我谈谈对四大组件的理解,今天先给大家介绍一下Activity
1.1Activity的四种状态
running/paused/stopped/killed
running:当前Activity正处于运行状态,指的是当前Activity获取了焦点。
paused:当前Activity正处于暂停状态,指的是当前Activity失去焦点,此时的Activity并没有被销毁,内存里面的成员变量,状态信息等仍然存在,当然这个Activity也仍然可见。
stopped:与paused状态相似,stopped状态的Activity是完全不可见的,但是内存里面的成员变量,状态信息等仍然存在,但是也没有被销毁。
killed:已经被销毁的Activity才处于killed状态,它的内存里面的成员变量,状态信息等都会被一并回收。
1.2 Activity的生命周期
1).onCreate方法
当Activity第一次创建的时候调用。这个方法主要给我们提供了初始化操作,如:创建view,绑定数据等。另外这个方法里还有一个bundle参数,这个参数可以用来恢复数据等。
2).onStart方法
onCreate方法执行以后,onStart方法紧接着开始执行。该方法表示Activity已经显示了,但是还不能与用户交互。
3).onResume方法
调用onResume方法后,Activity就可以与用户进行交互,此时Activity就位于Activity 栈的栈顶。
4).onPause方法
调用onPause方法,Activity失去焦点,无法再与用户交互,但是依旧可见。
5).onStop方法
Activity不可见,进入后台。
6).onRestart方法
Activity由不可见变为可见是调用该方法。
7).onDestory方法
Activity被销毁。
1.3特殊生命周期分析
1).启动Activity;回到桌面;再次启动Activity
onCreate---->onStart---->onResume
onPause---->onStop
onRestart---->onStart---->onResume
2).按Back键退出activity
onPause---->onStop---->onDestory
3).从activityA跳转到activityB中
onPause---->onCreate---->onStart---->onResume---->onStop
1.4与生命周期相关的重要方法
1.4.1 onSaveInstanceState与onRestoreInstanceState方法
activity通过onSaveInstanceState()方法保存activity的状态,在onCreate或者onRestoreInstanceState方法恢复状态,如果是通过onRestart方法前端运行的话,只会执行onSaveInstanceState方法
1.4.2 onConfigurationChanged方法
横竖屏切换
https://blog.csdn.net/wulianghuan/article/details/8603982
2.Activity启动模式
Activity的启动模式包含四种,分别是:standard、singleTop、singleTask、singleInstance。
1)standard模式
这是Activity的标准启动模式,如果我们不对Activity做任何特殊处理的情况下就默认为该模式启动,所以该模式并不需要在manifest或者Intent里进行指定。不管Activity实例在任务栈中是否存在,每次打开Activity都会在任务栈中新建一个Activity实例。
2)singleTop模式
栈顶复用模式,该模式简单来说,启动的Activity已经在任务栈的栈顶话,那么再启动这个Activity的时候就不会创建该实例,否则就会创建该实例。
3)singleTask模式
栈内复用模式,singleTask指的是一个任务栈中只能存在一个这样的Acitivity。
4)singleInstance模式
单实例模式,该模式是四个模式当中最为特殊的一个,设置了该模式启动的Acitivyt会在一个独立的任务栈中开启,同事该任务栈有且只有一个这样的Activity实例。
singleInstace与singleTask的区别在于:singleTask启动的Activity在系统层面上来说是可以有多个实例的。但如果该ActivityA是singleInstance模式的话,那么无论有多少个应用程序调用它,它都只可能在系统中存在一个实例同时该实例还是位于它自己的一个单独的任务栈中。
如何指定启动模式
1)我们可以在manifest里通过Activity的launchMode进行指定
2).通过Intent中setFlags来指定启动模式
1.Intent.FLAG_ACTIVITY_NEW_TASK
2.Intent.FLAG_ACTIVITY_SINGLE_TOP
3.Intent.FLAG_ACTIVITY_CLEAR_TOP
4.Intent.FLAG_ACTIVITY_NO_HISTORY
Android四大组件之BroadcastReceiver(二)
https://www.jianshu.com/writer#/notebooks/24597241/notes/28897568
Android四大组件之Service(三)
https://www.jianshu.com/writer#/notebooks/24597241/notes/28900282