Android学习笔记九之Intent

Android学习笔记九之Intent意图Intent简介  前面我们介绍完Android系统的四大组件:Activity、Service、ContentProvider、BroadCastReceiver,现在,我们来介绍他们之间的联系枢纽————Intent  Intent,意思是“意图”,Intent是android系统提供的用于应用之间或应用内部Activity、S
摘要由CSDN通过智能技术生成

Android学习笔记九之Intent意图

Intent简介

  前面我们介绍完Android系统的四大组件:Activity、Service、ContentProvider、BroadCastReceiver,现在,我们来介绍他们之间的联系枢纽————Intent

  Intent,意思是“意图”,Intent是android系统提供的用于应用之间或应用内部Activity、Service、BroadCastReceiver之间进行交互的一种机制。Intent在程序运行时连接不同的组件,我们可以通过Intent向Android系统发出请求,Android系统会根据请求选择合适的组件进行响应。(ContentProvider本身就是一种通信机制,不需要通过Intent通信)

  如果AActivity想要向BActivity或者Android系统的其他组件传递参数,或者启动其他组件,不需要直接联系,通过Intent作为桥梁,简单的说就是,用Intent来作为中介联系其他组件。

例如可以通过下面这几种方法传递Intent实现启动Activity、启动Service或者绑定Service,发送广播

  • 启动Activity:Context.startActivity()或者调用Activity.startActivityForResult()
  • 启动Service或者绑定Service:Context.startService(),调用Context.bindService()来绑定一个service对象
  • 发送广播:Context.sendBroadcast(),Context.sendOrderedBroadcast(),或者Context.sendStickyBroadcast()

      Intent有两种:显式Intent和隐式Intent。显式Intent通过具体的组件名去启动组件,一次只能启动一个组件;隐式Intent不指定具体的组件名,而是指定Intent的Action、category等信息,交给Android系统去分析这个Intent,并帮我们选择合适的组件去启动,当有多个组件符合的时候,显示所有分组件给我们选择。

Intent的七大属性

Intent由以下各个组成部分:

  • ComponentName(组件):目的组件
  • action(动作):用来表现意图的行动
  • category(类别):用来表现动作的类别
  • data(数据):表示与动作要操纵的数据
  • type(数据类型):对于data范例的描写
  • extras(扩展信息):扩展信息
  • Flags(标志位):期望这个意图的运行模式

下面分别介绍各个属性:

1、ComponentName属性

  ComponentName明确指定目标组件的名称,属于显式Intent

btn_component = (Button) findViewById(R.id.btn_component);
    btn_component.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent();
            ComponentName componentName = new ComponentName(MainActivity.this, ComponentActivity.class);
            intent.setComponent(componentName);
            startActivity(intent);
        }
    });

或者可以这样写:

 btn_component = (Button) findViewById(R.id.btn_component);
    btn_component.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent();
//                ComponentName componentName = new ComponentName(MainActivity.this, ComponentActivity.class);
//                intent.setComponent(componentName);
            intent.setClass(MainActivity.this, ComponentActivity.class);
            startActivity(intent);
        }
    });

还可以这样写:这是最常用的写法

 btn_component = (Button) findViewById(R.id.btn_component);
    btn_component.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(MainActivity.this,ComponentActivity.class);
//                ComponentName componentName = new ComponentName(MainActivity.this, ComponentActivity.class);
//                intent.setComponent(componentName);
//                intent.setClass(MainActivity.this, ComponentActivity.class);
            startActivity(intent);
        }
    });
2、action属性

  action是用户定义的一个字符串,用于描述Android系统的应用组件。Intent不直接指明这个组件,交给Android系统去根据Intent-Filter做筛选,选择符合的组件去启动。例如下面的例子:

Activity代码:

btn_action = (Button) findViewById(R.id.btn_action);
    btn_action.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent();
            intent.setAction("com.example.ActionActivity");
         
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值