activity(二)
1,bundle的使用:activity之间交换数据;
Intent提供了多个重载的方法来“携带”额外的数据:
putExtras(Bundle data):向Intent中放入需要携带的数据包。
Bundle getExtras():取出Intent所携带的数据包。
putExtra(String name,xxx value):向Intent中按key-value对的形式存入数据。
getxxxExtra(string name):从Intent中按key取出指定类型的数据。
Bundle就是一个简单的数据包,bundle对象包含了多个方法来存入数据:
putxxx(Stirng key,xxx data):向bundle放入int,long等各种类型的数据。
putSerializable(String key,Serializable data):向bundle中放入一个可序列化的对象(class)。
Intent的putExtras(String name,xxx value)方法是“智能”,当程序调用intent的这个方法的时候,intent会向它携带的bundle来存入数据,如没有bundle则先自动的创建一个bundle对象,然后在存入数据。(bundle类似于map)。而intent负责activity之间的通信。
启动其他Activity并返回结果:
startActivityForResult(Intent intent,int requestCode)方法来启动activity。,该方法期望获取指定的Activity返回的结果。(1)当前的activity重写onActivityResult(int requestCode,int rewultCode,Intent intent),当被启动的Activity返回结果时,该方法被触发,其中requestCode代表请求码,而resultCode代表Activity返回的结果码,这个结果码也是有开发者根据业务需要自己定的。
(2)被启动的activity需要调用setResult()方法设置处理结果。
Activity的四种加载模式:
1,standard模式,标准模式:Android总会给新的activity创建一个新的实例。activity默认的加载模式。
2,singleTop模式;这种模式与standard模式基本相似,不同的是:当被启动的目标activity已经位于Task栈顶的时,系统不会创新创建activity实例,而是复用栈顶的activity实例。
3,singleTask模式:这种加载模式的activity在task内只有一个实例。
4,singleInstance模式:系统保证无论哪个Task中启动目标Activity,只会创建一个目标activity实例,并会使用一个全新的Task栈来装载该Activity实例。