1.什么是Intent
Android中的Inteng机制,提供了不同程序 之间 Activity Service BroadcastResever之间的通信与交互.
Intent,意为”意图”,Intent是一种运行时机制,它能连接两个不同的组件,通过Intent,可以向Android表达某种请求和意愿,然后根据这个请求来选择相应的组件去做响应.
2.Intent的属性
Intent分显示和隐式启动
第一类:启动,有ComponentName(显式),Action(隐式),Category(隐式)。
第二类:传值,有Data(隐式),Type(隐式),Extra(隐式、显式)。
第三类:启动模式,有Flag。
Intent总共有七个属性:分别为
component, action,categray,data, type, extra,flag
1.component(目标组件)
Intent intent = new Intent();
ComponentName name = new ComponentName(MainActivity.this, "com.xiaohong.activity_bymyself.OtherActivity");
intent.setComponent(name);
startActivity(intent);
和下面一样的结果:
Intent intent = new Intent(this, OtherActivity.class);
startActivity(intent);
2,action和categray
Action中指定了Intent要完成的动作,在activity中可以使用setAction()设置,它分为系统Action和自定义的action.
Action大多时候都是和Category一起使用的,所以这里我们将这两个放在一起来讲解。Intent中的Action我们在使用广播的时候用的比较多,在Activity中,我们可以通过设置Action来隐式的启动一个Activity.
调用系统的action
// 会开启系统中所有的app
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
startActivity(intent);
自定义的Action
清单文件中:
<activity android:name=".OtherActivity">
<intent-filter>
<action android:name="MYSELF_ACTION" />
<category android:name="com.xiaohong.activity_bymyself.OTHER_CATEGORY"/>
<!--一定加上-->
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
隐式Intent的创建:
Intent intent = new Intent("MYSELF_ACTION");
intent.addCategory("com.xiaohong.activity_bymyself.OTHER_CATEGORY");
startActivity(intent);
3.data
指定要执行的动作要操作的数据
4.type
5.eatra
6.flag
在activity之间一般不需要设置flag,在sevice.prodercastResever中 一般要设置这个,因为他们不自带任务栈.
说明:
注意一个方法:
// 当一个Activity被重新执行而不创建的时候调用的方法.
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
}
外加:
Activity之间的跳转,如果需要加上动画:
@Override
public void onClick(View v) {
((TextView) v).setText("已点击");
Intent intent = new Intent(this, OtherActivity.class);
ActivityOptionsCompat compat = ActivityOptionsCompat.makeScaleUpAnimation(v, v.getWidth() / 2, v.getHeight() / 2, 0, 0);
ActivityCompat.startActivity(this, intent, compat.toBundle());
}
参考文献:
http://blog.csdn.net/weihan1314/article/details/7973511
http://www.2cto.com/kf/201512/452648.html