基础知识:六、Intent
来源:互联网 发布:d3.js 世界地图 编辑:程序博客网 时间:2024/05/16 17:38
六、Intent
Intent可以传递的数据类型非常的丰富,java的基本数据类型和String以及他们的数组形式
都可以,除此之外还可以传递实现了Serializable和Parcelable接口的对象。
2、Serializable和Parcelable的区别
在使用内存的时候,Parcelable 类比Serializable性能高,所以推荐使用Parcelable类。1.Serializable在序列化的时候会产生大量的临时变量,从而引起频繁的GC。
传智播客武汉校区就业部出品 务实、创新、质量、分享、专注、责任
32
2.Parcelable不能使用在要将数据存储在磁盘上的情况。尽管Serializable效率低点,但在这
种情况下,还是建议你用Serializable 。
实现:
1.Serializable 的实现,只需要继承 Serializable 即可。这只是给对象打了一个标记,系统会
自动将其序列化。
2.Parcelabel 的实现,需要在类中添加一个静态成员变量 CREATOR,这个变量需要继承
Parcelable.Creator 接口。
public class MyParcelable implements Parcelable { private int mData;
public int describeContents() { return 0; }
public void writeToParcel(Parcel out, int flags) { out.writeInt(mData); }
public static final Parcelable.Creator<MyParcelable> CREATOR = new Parcelable.Creator<MyParcelable>() { public MyParcelable createFromParcel(Parcel in) { return new MyParcelable(in); }
public MyParcelable[] newArray(int size) { return new MyParcelable[size]; }
};
private MyParcelable(Parcel in) { mData = in.readInt(); }
}
3、请描述一下Intent 和 IntentFilter
Android 中通过 Intent 对象来表示一条消息,一个 Intent 对象不仅包含有这个消息的目的地,还可以包含消息的内容,这好比一封 Email,其中不仅应该包含收件地址,还可以包含具体的内
容。对于一个 Intent 对象,消息“目的地”是必须的,而内容则是可选项。
通过Intent 可以实现各种系统组件的调用与激活.
IntentFilter: 可以理解为邮局或者是一个信笺的分拣系统…
这个分拣系统通过3个参数来识别
Action: 动作 view
Data: 数据uri uri
Category : 而外的附加信息
Action 匹配
Action 是一个用户定义的字符串,用于描述一个 Android 应用程序组件,一个 IntentFilter 可
以包含多个 Action。在 AndroidManifest.xml 的 Activity 定义时可以在其 <intent-filter>节点
指定一个 Action 列表用于标示 Activity 所能接受的“动作”,例如:
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<action android:name="cn.itheima.action" />
……
</intent-filter>
如果我们在启动一个 Activity 时使用这样的 Intent 对象:
Intent intent =new Intent();
intent.setAction("cn.itheima.action");
那么所有的 Action 列表中包含了“cn.itheima”的 Activity 都将会匹配成功。
Android 预定义了一系列的 Action 分别表示特定的系统动作。这些 Action 通过常量的方式
定义在 android.content.Intent中,以“ACTION_”开头。我们可以在 Android 提供的文档中找
到它们的详细说明。
URI 数据匹配
一个 Intent 可以通过 URI 携带外部数据给目标组件。在 <intent-filter >节点中,通过
<data/>节点匹配外部数据。
mimeType 属性指定携带外部数据的数据类型,scheme 指定协议,host、port、path 指定
数据的位置、端口、和路径。如下:
<data android:mimeType="mimeType" android:scheme="scheme"
android:host="host" android:port="port" android:path="path"/>
电话的uri tel: 12345
http://www.baidu.com
自己定义的uri itcast://cn.itcast/person/10
如果在 IntentFilter 中指定了这些属性,那么只有所有的属性都匹配成功时 URI 数据匹配才会
成功。
Category 类别匹配
<intent-filter >节点中可以为组件定义一个 Category 类别列表,当 Intent 中包含这个列表
的所有项目时 Category 类别匹配才会成功。
0 0
- 基础知识:六、Intent
- [Android基础知识] 之六:Intent.Action的各种常见应用
- Intent基础知识
- Intent基础知识
- Android 基础知识之Intent
- Android基础知识一(Intent)
- 基础知识记录:intent解析
- Android入门/Intent(六)
- JAVA 基础知识(六) Reflection
- 传输基础知识(六)
- C++ 基础知识(六)
- Python基础知识(六)--字符串
- android 基础知识六
- C#基础知识(六)
- MakeFile基础知识(六)
- C#基础知识之六
- 标准C基础知识六
- Java基础知识(六)
- C#学习笔记之在DataGridView上显示数据
- EventBus--事件总线
- 建立哈夫曼树
- 上海2014科目二注意事项及经验浅谈(龙泉驾校)
- HDU 1230饭前开胃菜
- 基础知识:六、Intent
- Z字形编排问题
- AC自动机+矩阵快速幂 HDU 2243
- VS2012 + QT5.4.0 + OPENCV249 环境搭建小结
- Oracle Instant Client与PL/SQL配合远程连接oracle
- 漫谈 Clustering (3): Gaussian Mixture Model高斯混合模型GMM
- 多渠道打包
- 关于UNSPECIFIED、AT_MOST、EXACTLY和关于onmeasure两次调用
- 292. Nim Game