Android编程之Intent源码详解

  次阅读 作者:智能小宝 来源:互联网 2016-01-14 09:28 我要评论(0)

Intent源码详解,直接开始入题:

Intent源码6700多行代码,但真正核心代码 就那么几百行,大部分都用来定义常量字符串了

先来看一下

public class Intent implements Parcelable, Cloneable

没错,它还实现了cloneable接口,但平常我们很少会用到它,其实现方法为:

/**

* Copy constructor.

*/

public Intent(Intent o) {

this.mAction = o.mAction;

this.mData = o.mData;

this.mType = o.mType;

this.mPackage = o.mPackage;

this.mComponent = o.mComponent;

this.mFlags = o.mFlags;

if (o.mCategories != null) {

this.mCategories = new HashSet(o.mCategories);

}

if (o.mExtras != null) {

this.mExtras = new Bundle(o.mExtras);

}

if (o.mSourceBounds != null) {

this.mSourceBounds = new Rect(o.mSourceBounds);

}

if (o.mSelector != null) {

this.mSelector = new Intent(o.mSelector);

}

if (o.mClipData != null) {

this.mClipData = new ClipData(o.mClipData);

}

}

@Override

public Object clone() {

return new Intent(this);

}

没错,就是复制了一个自己

Intent另一个功能,就是传参,这里只展示public Intent putExtra(String name, String value),其他的都是类似这个写法:

public Intent putExtra(String name, String value) {

if (mExtras == null) {

mExtras = new Bundle();

}

mExtras.putString(name, value);

return this;

}

其中,mExtras是private Bundle mExtras;

那么,这里还得说一下public Intent putExtras(Bundle extras)方法:

public Intent putExtras(Bundle extras) {

if (mExtras == null) {

mExtras = new Bundle();

}

mExtras.putAll(extras);

return this;

}

没错,bundle中放入一个bundle。。。

再看一下取出的方法:

public String getStringExtra(String name) {

return mExtras == null ? null : mExtras.getString(name);

}

小结:如果是基本数据类型(Int,long,double,boolean,string)传参,没必要自己生成一个bundle对象,再传参到Intent中。

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...