说明:Intent是“意图”的意思,Intent通过指明当前组件想要执行的动作,让系统知道我们的“意图”之后,完成的一系列操作,除此之外,Intent还可以在不同组件之间传递数据。Intent一般可被用于启动活动
(Activity(startActivity(intent)))
、启动服务(Service(startService(intent)))
以及发送广播(Broadcast(sendBroadcast(intent)))
等场景,本篇笔记主要记载Intent启动活动的知识。
Intent大致可以分为两种:显式Intent和隐式Intent。
一、Intent的七大属性
①ComponentName(组件):目的组件
②Action(动作):用来表现意图的行动
③Category(类别):用来表现动作的类别
④Data(数据):表示与动作要操纵的数据
⑤Type(数据类型):对于data范例的描写
⑥Extra(扩展信息):扩展信息
⑦Flags(标志位):期望这个意图的运行模式
按照分类可以分为以下三种:
1.用于启动:ComponetName(显式)、Action(隐式)、Category(隐式)。
2.用于传递数据:Data(隐式)、Type(隐式)、Extra(显式、隐式)。
3.用于规定启动模式:Flags.
有关七大属性讲解详见《Intent七大属性》
二、显式Intent
Intent有多个构造函数的重载,其中一个是:
Intent(Context packageContext,Class<?> cls)
第一个参数Context要求提供一个启动活动的上下文;
第二个参数Class指定想要启动的活动目标.
通过这个构造函数就可以构建出Intent的“意图”,最后调用startActivity()方法就可以启动目标活动了。
在MainActivity中重写onClick()方法:
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.start_aty2:
Intent intent = new Intent(MainActivity.this,Aty2.class);
startActivity(intent);
}
}
或者:
@Override
public void onClick(View view) {
Intent intent = new Intent();
switch (view.getId()){
case R.id.start_aty2:
intent.setClass(MainActivity.this,Aty2.class);
//或者调用setComponent方法说明“意图”,启动活动
//intent.setComponent(new ComponentName(MainActivity.this,Aty2.class));
startActivity(intent);
}
}
效果图: