一、活动
活动(Activity)是可以包含用户界面(布局文件)的组件,主要用于与用户进行交互。
活动的启动模式(4种)格式为android:launchMode=" " 双引号内可填写standard 或 singleTop 或 singleTask 或SingleInstance
四者之间的区别:
standard:每次都会创建新活动实例,这是默认的活动启动模式;
singleTop:启动活动时如果发现返回栈的栈顶已经是该活动,则直接使用它,不会再创建新活动实例;
singleTask:启动时发现返回栈存在该活动实例则直接使用,并把该活动之上的所有活动统统退出栈;
SingleInstance:该模式下的活动有单独的返回栈,有利于活动实例共享;
二、Intent
Intent是用于活动之间的跳转,Intent又分为显式Intent(意图明显,指定某个活动)和隐式Intent(指定更为抽象的action和category)
举例:由当前的firstActivity跳转到SecondActivity
显式:
在firstActivity.class中
Intent i =new Intent(firstActivity.this,SecondActivity.class);
startActivity(i);
隐式:
先在AndroidMainfest.xml内SecondActivity中声明action 和 category
<activity android:name="SecondActivity">
<intent-filter>
<cation android:name="XXX"/>
<categroy android:name="ZZZ"/>
</intent-filter>
</activity>
然后在firstActivity.class中
Intent i =new Intent("XXX");
i.addCategory("ZZZ");
startActivity(i);
注意:隐式Intent还可用于启动其他程序的活动(系统浏览器)
第三、活动间Intent传递数据
1、Intent向下一个活动传递数据:
在FirstActivity.class中发送数据
String data = "sdssdd";
Intent i =new Intent(FirstActivity.this,SecondActivity.class);
i.putExtra("Extra_data",data);
startActivity(i);
在SecondActivity.class接收数据
Intent i =getIntent();
String data = i.getStringExtra("extra_data");
2、Intent返回数据给上一个活动:
在FirstActivity.class中
Intent i =new Intent(FirstActivity.this,SecondActivity.class);
startAcitivityForResult(i,1);//区别上面,1是请求码
/*因为返回时使用回调机制,所以应该在FirstActivity.class重写onActivity()方法*/
onActivity()有三个参赛,第一个为上面的请求码,第二个为下面的结果码,第三个是传过来的Intent实例
在SecondActivity.class中
Intent i = new Intent();
i.putExtra("data_extra",data);
setResult(RESULT_OK,i);//第一个参数为结果码
finish();