1,Intent的基础用法

Intent是android中各activity之间通信的一个很重要的类,一般我们是这么使用的

?
1
//创建一个intent
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Intent intent = new Intent();
  
//压值进intent中
//intent是基于一种基于Map的数据结构
//传我们的基本数据类型的可以之间key,value方式传值
intent.putExtra("hello","Hello world");
  
//但是,传一个对象的时要注意,该对象要实现序列化窗口才可以传值
//putExtra(String name, Serializable value)
Demo demo = new Demo();
intent.putExtra("Demo",demo);
  
//然后,我们把这个intent传到另外一个activity
intent.setClass(xxx.this,zzz.class);
startActivity(intent);
  
//-------
//目标activity
//获取传过来的intent
Intent intent = getIntent();
  
//从Intent中获取值
String hello = intent.getStringExtra("Demo");
Demo demo = (Demo)intent.getSerializable("Demo");

?
1
以上代码就是最基础的Intent的用法

2,深入Intent的构造和Intent-filter的基础入门

首先我们看下Intent的构造方法

?
1
2
3
4
5
6
7
8
9
10
11
12
    Intent()
//Create an empty intent.
    Intent(Intent o)
//Copy constructor.
    Intent(String action)
//Create an intent with a given action.
    Intent(String action, Uri uri)
//Create an intent with a given action and for a given data url.
    Intent(Context packageContext, Class<?> cls)
//Create an intent for a specific component.
    Intent(String action, Uri uri, Context packageContext, Class<?> cls)
//Create an intent for a specific component with a specified action and data.

?
1
出这些构造方法中我们,可以看出,新建一个Intent其实可以设置很多东西,这里我说说componentName,action,category,data

componentName

componentName 直译的话就是组件的名字的意思,如果我们写的一个类当作成一个组件,那么这个componentName就是用来封装我们写的这些类的位置.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//创建一个component的对象
ComponentName componentName = new ComponentName(Context.this, xxx.class);
  
Intent intent  = new Intent();
Intent.setComponent(componentName);
  
startActivity(intent);
  
//----------
//在xxxactivity中
ComponentName comp = getIntent().getComponent();
  
String packageName = comp.getPackName();
String className = comp.getClassName();

?
1
其实细心的同学可以发现,其实跟setClass(),没什么区别吗,而且,还比setClass()麻烦,其实,setClass()是封装了这个功能而已,最实现还是要用到这个类.

Action,category,data简单入门

我感觉,学intent 和 intent-filter把action,category,data搞清楚才算真正的掌握了intent的用法.

Action

如果学过Structs2的同学应该不会陌生,所谓的action就是发送一个特定的请求,然后,由一个符合这个请求的activity响应

官方文档中是这么说action的:

The action largely determines how the rest of the intent is structured — particularly the data and extras fields — much as a method name determines a set of arguments and a return value. For this reason, it's a good idea to use action names that are as specific as possible, and to couple them tightly to the other fields of the intent. In other words, instead of defining an action in isolation, define an entire protocol for the Intent objects your components can handle.

我简要说下我理解的大义,有错欢迎指出

action 在很大一部分程度上决定你的intent 是如何构建的,特别是还有data,和 额外的一些字段,还有更多的是如何决定方法名,设置数组和返回的参数.由于这个原因,这是一个很好的方法去尽可能的具体的使用action,用action把这些字段紧密的联系在一起.另外,灵活定义你的action,然后把它定义在一个文档中为你的intent对象的组建能够正常处理

渣翻译…可能比谷歌翻译还有烂…有错欢迎指出!!!!!!!!!!!!!

category

要使一个action能够正常运行,category是必不可少的,关于category详细介绍请看开发者文档中的intent and intent-filter

这里说下注意的细节和使用.

首先,这句话是很重要的..取之于官方文档

Therefore, activities that are willing to receive implicit intents must include "android.intent.category.DEFAULT" in their intent filters.

这句话,告诉我们在intent-filter(可以用xml创建也可以用代码创建,这里主要讲xml的创建),必须添加一个android.intent.category.DEFAULT,至于,不添加会发生什么事…我花了半个小时的排错告诉我是无法运行的

?
1
2
3
4
5
6
7
//在我们要运行的activity中添加
<activity android:name=".SecondActivity" android:label="second">
              
            <intent-filter >
              
                <action android:name="kg.tom.TEST"/>
                <category android:name="

android.intent.category.DEFAULT

?
1
2
3
" />
            </intent-filter>
        </activity>

?
1
2
3
4
5
6
7
//firstActivity
//在创建好的一个监听器里面方法中写上
Intent intent = new Intent();
intent.setAction("kg.tom.TEST");
  
//利用action来运行相应的activity
startActivity(intent);

注意:每个intent只能设置一个action,但是,可以设置多个category,这里的组合问题,自己好好想想吧.

data

因为就是一些参数的介绍,看官方文档就好了,我是这样理解这个DATA,例如,我们一个Mp3播放器,当我们在任务管理器中点击一个MP3文件,MP3这个文件就是一个data,就会触发我们,在intent-filter匹配这个Mp3,<data />的activity运行..

请注意!!!这里给的都是些关键代码片段…

Intent进阶 和 Intent-filter 学习笔记相关推荐

  1. 好程序员web前端分享CSS Bug、CSS Hack和Filter学习笔记

    为什么80%的码农都做不了架构师?>>>    CSS Bug.CSS Hack和Filter学习笔记 1)CSS Bug:CSS样式在各浏览器中解析不一致的情况,或者说CSS样式在 ...

  2. Dr_can Kalman Filter学习笔记(三)

    Dr_can Kalman Filter学习笔记(三) 本文学习自Dr_can卡尔曼滤波关于Kalman Gain的推导 本文对卡尔曼增益进行一个详细的推导. 一.问题引入 在笔记二中我们得到了状态空 ...

  3. Kalman Filter 学习笔记

     Intro 最近在学习伟大的Kalman Filter,这篇笔记主要是对国外的两篇介绍Kalman Filter的博客的翻译和一些个人理解,博客链接:Kalman Filter For Dumm ...

  4. Redux 进阶 - react 全家桶学习笔记(二)

    注:这篇是17年1月的文章,搬运自本人 blog... https://github.com/BuptStEve/... 零.前言 在上一篇中介绍了 Redux 的各项基础 api.接着一步一步地介绍 ...

  5. JS进阶 Day1 作用域 函数进阶 结构赋值(学习笔记)

    1.作用域 1)局部作用域 函数作用域 注:函数执行完毕后,函数内部的变量实际被清空了 块级作用域 在js中使用{}包裹的代码称为代码块,代码块内部声明的变量外部将{有可能}无法访问 let声明的变量 ...

  6. 《深度学习进阶 自然语言处理》学习笔记(2)

    前篇链接 link 目录 第五章 RNN 语言模型 RNN模型 模型架构 一个典型RNN单元的计算图 损失函数的设置 评价指标 总结 第六章 Gated RNN 上一章RNN存在的问题 梯度爆炸与梯度 ...

  7. Filter学习笔记

    Filter:过滤器 1.概念: web中的过滤器:当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能 作用: 一般用于完成通过的操作.如:登录验证.同一编码处理.敏感字符过滤-- 2 ...

  8. 《程序员进阶攻略》学习笔记

    整个专栏分七讲,下面总结作者感触颇深的内容. 一.征途:启程之初 1.有时选择对了合适的路,比光顾着赶路要重要得多. 2.技术的选择,都是赚取长期回报,短期的波动放在长期来看终将被抵消掉,成为时代的一 ...

  9. javaScript进阶webAPI web前端api进阶DOM、BOM学习笔记day01

    一.Web_API 基础认知 1. 作用和分类 作用:使用js去操作html和浏览器 分类:DOM (文档对象模型)BOM(浏览器对象模型) 2. DOM DOM(document Object Mo ...

  10. Quaternion kinematics for the error-state Kalman filter 学习笔记

    1.卡尔曼滤波器的核心是追踪状态变量的均值和方差在一个动力系统里如何变化,以及计算关于测量值的条件期望和条件方差.在 IMU 的姿态估计中,姿态的均值和方差随时间的变化是由陀螺仪的误差模型所决定的. ...

最新文章

  1. 发推吐槽职场性别歧视后,苹果女高管被无限期行政休假
  2. LeetCode 1 两数之和
  3. numpy ndarray.tostring()(在数组中构造包含原始数据字节的Python字节)(tobytes()函数的兼容性别名)
  4. java中三个基本框架_对于Java基础者应该如何理解Java中的三大框架!
  5. 用 Mars Remote API 轻松分布式执行 Python 函数
  6. 城市轨道交通运营管理属于什么院系_专业介绍|城市轨道交通运营管理专业
  7. 基础知识(十二)Opengl回顾记录
  8. 万字长文讲解编码知识,看这文就够了!| 原力计划
  9. 【洛谷p1164】小A点菜
  10. iOS蓝牙开发之数据传输精华篇
  11. 【时空智友】“采购入库单” 增加导入Excel模板的方式
  12. PaddleNLP登顶FewCLUE小样本学习榜单;AutoPrompt自动化提示功能直接带你原地起飞
  13. Blender学习入门(二)-通用模型技术总结
  14. 需要管理员权限才能删除此文件夹,解决办法
  15. postman进行批量测试的步骤
  16. 基于对抗生成网络的图像转换技术【论文笔记】
  17. request.setAttribute()的用法
  18. java 完整子图_用JAVA求解最大连通子图
  19. linux otg u盘,如何使用OTG手机功能U盘?
  20. iOS学习—添加震动效果

热门文章

  1. DOS BAT用法简例子
  2. 移动互联网教育领域或将出现新的风口?
  3. [Python]新手写爬虫全过程(已完成)
  4. 添加Graphic Drivers PPA
  5. 一文详解 YOLO 2 与 YOLO 9000 目标检测系统
  6. DeepLearning tutorial(5)CNN卷积神经网络应用于人脸识别(详细流程+代码实现)
  7. glibc(ptmalloc)内存暴增问题解决
  8. UOJ228:基础数据结构练习题——题解
  9. 服务器与浏览器数据传输过程中编码问题
  10. Java之定时任务详解