四大组件之activity

activity:四大组件之一,负责用户与界面的交互,每一个activity都对应一个单独的window。

acitivity的生命周期:

正常启动下的生命周期:
	onCreate()——activity第一次创建的时候调用
	onstart——activity创建完毕,可见但没有位于前台时
	onResume——activity位于前台,可见并且可以进行交互
	onPause——activity可见但没有位于前台,处于半遮盖的状态,例如在当前页面弹出一个dialog。
	onStop——activity位于后台不可见
	onDestory——当activity销毁时调用

异常情况下的生命周期:
当当前activity的状态发生改变时,例如横竖屏切换时,activity会走异常情况下的生命周期。
如果要activity走异常情况下的生命周期,则必须在AndroidManifest.xml中设置android:configChanges=“orientation”,否则activity不会走生命周期方法。

onSaveInstanceState——走异常情况下的生命周期方法首先会回调这个方法用来保存当前的状态信息
onPause
onStop
onDestroy
onCreate——从onCreate中也可以获取到onSaveInstanceState保存的信息数据,但并不可靠
onStart
onRestroeInstanceState——用来将onSaveInstanceState中保存的信息进行恢复,当这个方法被回调时,参数中一定有保存的数据

activity的使用:
1.当我们新建一个工程的时候,AS会自动帮我们生成一个MainActivity,如果想手动设置MainActivity可以在AndroidManifest.xml中对activity进行手动配置。
2.显式开启:在项目内开启activity可以使用startActivity进行开启,使用intent(意图)传入当前activity的content和目标activity,并将intent作为startActivity的参数对目标activity进行开启,适合对已知的activity进行开启
3.隐式开启:不需要在intent中指定目标Activity,只需要指定Intent指定对应的category(类别)、action(动作)、data(数据)即可,category、action、data需要在AndroidManifest.xml中进行配置,隐式显示可以有效减少代码的耦合度,但使用起来不太方便。

activity之间的数据传递:

1.使用intent+ Bundle,可以使用bundle保存数据,并将bundle作为intent的参数进行传递,可以传递实现了序列化的对象和基本数据类型。
2.使用静态变量
3.使用全局变量
4.使用Eventbus
5.使用广播
6.使用本地文件
7.使用SP

activity的四种启动模式:
1.standard——默认的启动模式,每次开启一个activity都会创建一个新的activity实例放入activity栈中。
2.singleTop——栈顶复用模式,当这个activity在activity栈的栈顶时,开启这个模式的activity则不会创建新的实例,但是他会调用newintent方法。
3.singleTask——栈内复用模式,使用这个模式的activity被调用时,如果栈内已经有此activity的实例那么就不会创建新的实例,并且会移除位于此activity之上的所有activity实例将其置于前台,并且会回调newintent方法。
4.singleInstance——全局唯一模式,使用此模式的activity被调用时会将其放入一个新的栈中,以后每次调用时都会使用这个栈中的activity实例而不会创建新的实例,在该模式下,我们会为目标Activity分配一个新的affinity。

singleTop与singleTask生效的必要条件是,activity栈上的taskaffinity必须相同,taskaffinity可以在AndroidManifest.xml中进行指定。

你可能感兴趣的:(四大组件之activity)