时间:2021-05-19
Intent是Android中用来调用其它组件的类,通过Intent,我们可以非常方便的调用Activity,Broadcast Receiver和Service。
Intent intent = new Intent(Intent.ACTION_VIEW);intent.setData(Uri.parse("http://ponent来指定),那么这样的Intent被称为显示Intent。对于显式Intent,因为他已经指明了要调用的具体的类,所以Android会忽略掉其action,category以及data属性。(个人觉得显示Intent调用比隐式的更快些)
Serializable vs Parcelable
Android 主要是通过Intent来实现组件之间的相互调用,同时还可以传递附加的数据。这些数据主要是存储在Bundle之中(当调用Intent.putExtras(Bundle)时,Android会复制Bundle中的数据,而不是引用,因此再修改Bundle中的数据并不会改变Intent中携带的数据)。
Bundle之中可以存放基本数据类型以及实现了Serializable或Parcelable接口的类。
当我们要向Bundle中存放一个类Obj(包含两个int成员的简单类),可以让它实现Serializable或Parcelable接口,如下所示:
1.Serializable
我们可以通过intent.putExtra("obj", new Obj(1, 2));来将其放入intent中,然后通过 obj = (Obj) intent.getSerializableExtra("obj");来将其取出。
2.Parcelable
我们可以通过intent.putExtra("objpar", new ObjPar(1, 2));来将其放入intent中,然后通过 objpar = (ObjPar) intent.getParcelableExtra("objpar"); 来将其取出。
以上是两种向Bundle中存放Object对象的方法,明显可以看出实现Serializable接口更加简单,因为他是一个标记性的接口,并不需要实现某个具体方法。相比而言实现Parcelable接口就显得相对复杂一些,但这样带来的好处是性能的大幅提高。这是因为当我们实现Serializable接口后,真正的序列化工作是由JDK来完成,他需要通过反射来获取成员变量,因为反射的性能并不高,因此这种序列化方式速度慢。然而实现Parcelable接口时,我们提供了该接口中定义方法的实现(writeToParcel实现序列化,createFromParcel实现反序列化),这就避免了反射的使用,因此这种方式速度快。
那么这两种方式,性能差别有多大呢?下面是国外网站上的一个测试结果:Serializable耗时是Parcelable的10倍左右
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Android中的Intent是一个非常重要的类,如果对Intent不是特别了解,可以参见《详解Android中Intent的使用方法》。如果对IntentFi
AndroidIntent封装的实例详解什么是Intent:Intent是协调应用间、组件之间的通讯和交互。通过Intent你可以启动Activity、Serv
最近在进行android开发过程中,在将Intent传递给调用的组件并完成组件的调用时遇到点困难,并且之前对Intent的学习也是一知半解,最近特意为此拿出一些
一、简介Android应用程序中一般都有多个Activity,在Activity中,通过调用StartActivity方法,并在该方法的参数中传递Intent对
如果对Intent不是特别了解,可以参见博文《详解Android中Intent的使用方法》,该文对本文要使用的action、category以及data都进行了