Android08--Android之Intent的七大属性

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

  1. Action中指定了Intent要完成的动作,在activity中可以使用setAction()设置,它分为系统Action和自定义的action.

  2. 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值