1.新的序列化方式:

android提供了一种新的类型:Parcel。本类被用作封装数据的容器,封装后的数据可以通过Intent或IPC传递。

除了基本类型以外,只有实现了Parcelable接口的类才能被放入Parcel中。

Parcelable实现要点:需要实现三个东西

1)writeToParcel 方法。该方法将类的数据写入外部提供的Parcel中.声明如下:

writeToParcel (Parcel dest, int flags) 具体参数含义见javadoc

2)describeContents方法。没搞懂有什么用,反正直接返回0也可以

3)静态的Parcelable.Creator接口,本接口有两个方法:

createFromParcel(Parcel in) 实现从in中创建出类的实例的功能

newArray(int size) 创建一个类型为T,长度为size的数组,仅一句话(return new T[size])即可。估计本方法是供外部类反序列化本类数组使用。

示例:

需求:我们经常需要在多个部件(activity或service)之间通过Intent传递一些数据,简单类型(如数字、字符串)的可以直接放入Intent。复杂类型(例如,J2ee中的Bean)的必须实现Parcelable接口。示例如下:

package cn.wizhy;import android.os.Parcel;
import android.os.Parcelable;public class Phone implements Parcelable{String type;String company;int price;public Phone(String t,String c,int p) {type=t;company=c;price=p;}public Phone() {// TODO Auto-generated constructor stub
    }public String getType() {return type;}public void setType(String type) {this.type = type;}public String getCompany() {return company;}public void setCompany(String company) {this.company = company;}public int getPrice() {return price;}public void setPrice(int price) {this.price = price;}public static final Parcelable.Creator<Phone> CREATOR = new Creator<Phone>(){@Overridepublic Phone createFromParcel(Parcel source) {// TODO Auto-generated method stubPhone cus = new Phone();  cus.type = source.readString();  cus.company = source.readString();  cus.price = source.readInt();  return cus;  }@Overridepublic Phone[] newArray(int size) {// TODO Auto-generated method stubreturn new Phone[size];}  };@Overridepublic int describeContents() {// TODO Auto-generated method stubreturn 0;}@Overridepublic void writeToParcel(Parcel dest, int flags) {// TODO Auto-generated method stub
        dest.writeString(type);dest.writeString(company);dest.writeInt(price);}
}

第一个Activity,构造类将其存放到Arraylist里,并通过Intent传给第二个Activity

package cn.wizhy;import java.util.ArrayList;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;public class Demo extends Activity {ArrayList<Phone> info = new ArrayList<Phone>();public Phone phone;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);insertPhone();Intent intent = new Intent(this,Demo2.class);
//        Bundle bundle = new Bundle();
//        bundle.putSerializable("phone", phone);//        intent.putExtras(bundle);phone = new Phone("goole","G1",6000);info.add(phone);phone = new Phone("apple", "iphone3G", 5000);info.add(phone);intent.putExtra("phones", info);startActivity(intent);}public void insertPhone(){phone= new Phone("apple", "iphone3G", 5000);}}

第二个Activity接受数据:

package cn.wizhy;import java.util.ArrayList;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;public class Demo2 extends Activity {ArrayList<Phone> info = new ArrayList<Phone>();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Intent intent = getIntent();info =intent.getParcelableArrayListExtra("phones");for(int i=0;i<info.size();i++){System.out.println("type="+info.get(i).type+"   company="+info.get(i).company+" price"+info.get(i).price);}}
}

from:http://aijiawang-126-com.iteye.com/blog/643762

转载于:https://www.cnblogs.com/bill-joy/archive/2012/04/25/2470248.html

android - 使用Parcelable序列化相关推荐

  1. Android实现Parcelable对象序列化的实例

    bundle.putParcelable可以实现传递对象,但是这个对象的类必须实现Parcelable接口才能够使用. 下面是一个简单的在Activity之间传递对象的例子. parcel实现参数的序 ...

  2. android parcelable 对象,Android实现Parcelable对象序列化的实例

    Android实现Parcelable对象序列化的实例 bundle.putParcelable可以实现传递对象,但是这个对象的类必须实现Parcelable接口才能够使用. 下面是一个简单的在Act ...

  3. Android中的Serializable和Parcelable序列化

    Serializable和Parcelable接口都可以完成对象的序列化过程,在Android中当我们需要通过Intent和Binder传输数据时,我们要传输的对象就需要使用Serializable和 ...

  4. Android中Parcelable接口用法

    --  通过writeToParcel将你的对象映射成Parcel对象,再通过createFromParcel将Parcel对象映射成你的对象.也可以将Parcel看成是一个流,通过writeToPa ...

  5. Android中Parcelable的原理和使用方法

    Parcelable的简单介绍 介绍Parcelable不得不先提一下Serializable接口,Serializable是Java为我们提供的一个标准化的序列化接口,那什么是序列化呢? 进行And ...

  6. Android 的Parcelable接口

    此文转载自http://www.cnblogs.com/renqingping/archive/2012/10/25/Parcelable.html 1. Parcelable接口 Interface ...

  7. android中接口的作用是什么意思,Android为什么要序列化

    android为什么要序列化?什么是序列化,怎么进行序列化 why 为什么要了解序列化?-- 进行Android开发的时候,无法将对象的引用传给Activities或者Fragments,我们需要将这 ...

  8. Android中Parcelable与Serializable接口用法

    转自: Android中Parcelable接口用法 1. Parcelable接口 Interface for classes whose instances can be written to a ...

  9. android studio parcelable,Android中Parcelable的使用详解

    Parcelable与Serializable Serializable是Java为我们提供的一个标准化的序列化接口. Parcelable是Android为我们提供的序列化的接口. 对比: 1.Pa ...

最新文章

  1. 服不服?40行Python代码,实现卷积特征可视化
  2. 职称计算机和职称英语期限,专业技术职称考试,职称英语和职称计算机有效期多长时间,每年什么时候报名啊?上海的...
  3. Eclipse启动之四 : Eclipse核心框架启动(百度空间迁移)
  4. 上下位机通讯协议_上位机与下位机的区别通讯
  5. 2017 数据驱动大会豪华议程出炉,早鸟票一周内全部售罄
  6. c语言实验答案周信东第三章,桂林电子科技大学C语言程序设计习题答案周信东实验顺序结构与逻辑运算.pdf...
  7. 题目 1886: [蓝桥杯][2017年第八届真题]包子凑数(欧几里得+完全背包)
  8. flash 火狐总是崩溃_win10系统火狐flash插件总是崩溃的解决方法
  9. “智慧感控”理念革新医疗管理
  10. mysql password() pam-mysql兼容性_pam_mysql认证ftp虚拟用户账号,且拥有不同的权限
  11. android 微信支付 2,Android微信支付获取二次签名Sign的方法
  12. 10.Hello World 的 Java 项目创建和项目配置文件讲解
  13. cecore.cls.php 08cms,08cms小说系统 v1.0PHP CMS源码下载-华软网
  14. win10安装visio2010出错_win10系统安装Office2010提示错误1935的解决方案
  15. edp和edt哪个好_香水edt和edp是什么意思
  16. 解决微信emjoy特殊符号插入数据库出错
  17. 小红书如何营销?各大品牌小红书运营投放营销策划方案合集(13份)
  18. 10余智慧项目建设初见成效 南岸用智慧城市开启智慧生活
  19. Bootstrap导航和导航条
  20. Linux设备驱动程序

热门文章

  1. 改良程序需要的11个技巧
  2. extract($_POST[])
  3. asp.net中, 如何在后台获取访问这个页面的用户的名字?
  4. jmeter 使用命令行执行
  5. ELK 使用小技巧(第 5 期)
  6. javaEE(3)_servlet基础
  7. 转载:Python正则表达式
  8. androidpn的学习研究(二)androidpn-server服务端启动过程的理解分析
  9. Launcher启动的流程图【AndroidICS4.0——Launcher系列四】
  10. XXX管理平台系统——项目总结(over)