您的位置:首页 > 移动开发 > Android开发

Android08--Android之Intent的七大属性

2016-08-29 17:53 387 查看

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: