博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android---Parcelable包装类的作用
阅读量:6848 次
发布时间:2019-06-26

本文共 1456 字,大约阅读时间需要 4 分钟。

 

android提供了一种新的类型:Parcel。本类被用作封装数据的容器,封装后的数据可以通过Intent或IPC传递。 除了基本类型以外,只有实现了Parcelable接口的类才能被放入Parcel中。Android平台对可通过进程通信(IPC)机制进行传递的数据定义进行约定,这些数据类必须实现Parcelable接口,且必须包含一个类型为Parcelable.Creator且名为CREATOR的公共静态成员。只有实现Parcelable接口的类才能以意向的扩展数据进行传递。

实现于Parcelable接口的CREATOR成员的createFromParcel方法用于告诉平台如何从包裹里创建该类的实例,而writeToParcel方法则用于告诉平台如何将该类的实例存储到包裹中。通过接口队成员的约定,Android平台可获知数据类的数据读取和写入的接口,从而进行对象的实例化和持久化,该过程如下图:

 

示例代码如下:

public 
class 
Person
implements 
Parcelable{
    
private 
String name;
    
private 
String phone;
    
//必须包含一个类型为Parcelable.Creator且名为CREATOR的公共静态成员
    
private 
static 
final 
Parcelable.Creator<Person> CREATOR =
new 
Parcelable.Creator<Person>() {
        
@Override
        
public 
Person createFromParcel(Parcel source) {
//该方法用于告诉平台如何从包裹里创建数据类实例
            
return 
new 
Person(source);
        
}
        
@Override
        
public 
Person[] newArray(
int 
size) {
            
return 
new 
Person[size];
        
}
    
};
    
public 
Person(String name,String phone){
        
this
.name = name;
        
this
.phone = phone;
    
}
    
public 
Person(Parcel in){
        
this
.name = in.readString();
        
this
.phone = in.readString();
    
}
    
@Override
    
public 
int 
describeContents() {
        
return 
0
;
    
}
     
    
/**
     
* 告诉平台如何将数据实例写入Parcel里
     
*/
    
@Override
    
public 
void 
writeToParcel(Parcel dest,
int 
flags) {
        
dest.writeString(
this
.getName());
        
dest.writeString(
this
.getPhone());
    
}
    
/**
     
* 属性的set和get方法
     
* @return
     
*/
    
public 
String getName() {
        
return 
name;
    
}
    
public 
void 
setName(String name) {
        
this
.name = name;
    
}
    
public 
String getPhone() {
        
return 
phone;
    
}
    
public 
void 
setPhone(String phone) {
        
this
.phone = phone;
    
}
     
 
}

转载地址:http://efrul.baihongyu.com/

你可能感兴趣的文章
ansible 提示安装sshpass
查看>>
常用SQL语句
查看>>
Linux网络编程必看书籍推荐
查看>>
GitHub在windows上代码管理教程
查看>>
Android 异步处理
查看>>
Magento安装错误:PHP extension ‘mcrypt’ ‘curl’ must be loaded.
查看>>
转:linux/unix命令行终端的光标及字符控制快捷键
查看>>
Yahoo为啥赚不到钱
查看>>
搞笑的金山软件
查看>>
Windows Server 8 Beta 初体验之一:安装篇(无技术含量,安装过的人可以略过)
查看>>
《Linux设备驱动开发详解》第3版现隆重征求读者创作意见
查看>>
Skype for Business Server 2015-12-WAP-发布-2-邮件服务器
查看>>
linux下文件删除的原理精华讲解(考试题答案系列)
查看>>
《网管员世界》记者走基层采访实录
查看>>
VC客户端无法登陆都是REDO日志惹的祸
查看>>
VMware Workstation 12-虚拟机-批量创建-快照-批量创建恢复
查看>>
2013年下半年系统集成项目管理工程师考试试卷(回忆版)
查看>>
reviewboard安装实战
查看>>
Access模糊查询
查看>>
【LoadRunner技术讲座7】使用windows socket协议
查看>>