码迷,mamicode.com
首页 > 其他好文 > 详细

Parcelbale接口

时间:2019-03-06 01:18:58      阅读:283      评论:0      收藏:0      [点我收藏+]

标签:public   test   类加载器   传递   因此   线程   shu   上下   效率   

参考链接

Parcelable接口相对Serializable接口比较复杂,但是有一套模板代码可以参考,所有的实现Parcelable接口的类都跟模板代码类似。

 1 package com.example.murphy.helloworld;
 2 
 3 import android.app.Person;
 4 import android.os.Parcel;
 5 import android.os.Parcelable;
 6 
 7 public class UserP implements Parcelable {
 8     private String account;
 9     private String password;
10 
11     //创建私有构造器,供CREATOR使用,从Parce回复数据
12     private UserP(Parcel in) {
13         account = in.readString();
14         password = in.readString();
15     }
16 
17     //用来恢复自定义对象
18     public static final Creator<UserP> CREATOR=new Creator<UserP>() {
19         @Override
20         public UserP createFromParcel(Parcel source) {
21             return new UserP(source);
22         }
23 
24         @Override
25         public UserP[] newArray(int size) {
26             return new UserP[size];
27         }
28     };
29 
30 
31     @Override
32     public int describeContents() {
33         return 0;
34     }
35 
36     /*将数据写到Parce中*/
37     @Override
38     public void writeToParcel(Parcel dest, int flags) {
39         dest.writeString(password);
40         dest.writeString(account);
41     }
42 }

 序列化之后可使用Bundle的putParcelable的方法,将实现Parcelable接口的对象放进bundle打包进Intent然后传送。

序列化功能由writeToParcel来完成,最终是通过Parcel中的一系列write方法来完成的;反序列化功能由CREATOR来完成,其内部表明了如何创建序列化对象和数据,并通过Parcel的一系列read方法来完成反序列化的过程;内容描述功能由describeContents方法来完成,几乎在所有情况下这个方法都是返回0,仅当当前对象中存在文件描述符时,此方法返回1.需要注意的是,由于person是另一个可序列化对象,所以它的反序列化过程需要传递当前线程的上下文类加载器,否则会报无法找到类的错误。
 
Serializable和Parcelable选择哪个?

Serializable是Java中的序列化接口,其使用起来简单但是开销很大,序列化和反序列化过程需要大量I\O操作。而Parcelable是Android中序列化方式,因此更适合用在Android平台上,它的缺点是使用起来稍微复杂一点,但是因为有一套模板,所以这点复杂还是可以接受的,而且它的效率很高,这也是Android推荐的序列化方式,因此在Android平台上首选Parcelable。

Parcelbale接口

标签:public   test   类加载器   传递   因此   线程   shu   上下   效率   

原文地址:https://www.cnblogs.com/woyaodangxueba/p/10480595.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!