Activity小结

1,任务。一个应用程序整体看作一个task;就是用栈的方式组织一系列activity的集合,新加入的activity是位于栈顶的。

2,activity的生命周期

正常启动的调用顺序:oncreate->onstart(可见)->onresume(可见可交互);在结束时候的调用顺序是onPause(可见不可交互)->onStop(不可见)->onDestroy。

在被停止的时候分为两种情况,如果先出的activity是全屏的那么顺序是onpause->onStop。(调用finsh方法或者内存不够的时候才会ondestory);恢复的时候是onStart->onResume

如果先出的activity是对话框或者是透明形式,那么顺序是onPause,回复的时候是onResume。

3,activity中的数据传递

可以通过bundle对象传递各种基本类型,如果想要传递对象,需要对象对应的类实现序列化接口或者Parcelable接口

如果需要在activiy之间回传数据,可以通过startActivityForResult方法启动一个activity,在启动activity的onfinish方法中通过setResult方法设置返回值,并且提供一个返回码,在第一个activity中通过重载onActivityResult方法来获得回传结果。

4,activity的加载模式

一般调用activity的时候,除了结束栈顶的activity来显示下一个activity外,只能创建新的activity。这是默认的stardard加载模式。activity的加载模式可以通过配置文件中的android:launchMode节点进行设置。

除此之外,还有singleTop加载模式,不是每次都创建新实例,如果原来的activity已经位于栈顶那么就不会创建新实例。

singleTask仅仅创建一个实例,不过依旧存在于原来的task中。

singleInstance也是仅仅创建一个实例,创建的activity总是位于顶部堆栈,该activity独占一个task。其他activity不能存在于这个task。如同加了FLAG_ACTIVITY_NEW_TASK参数。

 

intent利用category和data启动activity,

category与data的匹配。

二者都是使得intent的意图更加明确,利用category进行匹配的时候,intent对象中的全部category一定都要在intentfilter对象中存在,而intentfilter中的category可以比intent对象中的category多。

利用data进行intent匹配主要用于匹配intent中的uri。

 

你可能感兴趣的:(Activity)