`
wen742538485
  • 浏览: 237393 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Android 中Parcelable的作用

阅读更多
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
import android.app.Activity;  

import android.content.Intent;  

import android.os.Bundle;  
import android.os.Parcelable;  
 
public class Test extends Activity {  
     
    @Override 
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
        Intent i = getIntent();  
        Person p = i.getParcelableExtra("yes");  
        System.out.println("---->"+p.name);  
        System.out.println("---->"+p.map.size());  
    }  

发送的Activity
import java.util.HashMap;  
 
import android.app.Activity;  
import android.content.Intent;  
import android.os.Bundle;  
 
public class TestNew extends Activity {  
     
    @Override 
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
        Intent intent = new Intent();  
        Person p = new Person();  
        p.map = new HashMap<String,String>();  
        p.map.put("yes", "ido");  
        p.name="ok";  
        intent.putExtra("yes", p);  
        intent.setClass(this, Test.class);  
        startActivity(intent);  
    }  

Parcelable的实现类
import java.util.HashMap;  
 
import android.os.Parcel;  
import android.os.Parcelable;  
 
public class Person implements Parcelable {  
 
    public HashMap<String,String> map = new HashMap<String,String> ();  
      
    public String name ;  
    @Override 
    public int describeContents() {  
        return 0;  
    }  
 
    @Override 
    public void writeToParcel(Parcel dest, int flags) {  
 
        dest.writeMap(map);  
        dest.writeString(name);  
    }  
    public static final Parcelable.Creator<Person> CREATOR = new Parcelable.Creator<Person>() {  
//重写Creator
 
        @Override 
        public Person createFromParcel(Parcel source) {  
            Person p = new Person();  
            p.map=source.readHashMap(HashMap.class.getClassLoader());  
            p.name=source.readString();  
            return p;  
        }  
 
        @Override 
        public Person[] newArray(int size) {  
            // TODO Auto-generated method stub  
            return null;  
        }  
    };  
 
}  

分享到:
评论

相关推荐

    android-parcelable-intellij-plugin, 面向 Android Parcelable样板代码生成的IntelliJ插件.zip

    android-parcelable-intellij-plugin, 面向 Android Parcelable样板代码生成的IntelliJ插件 intellij/Android Studio 插件,用于 Android Parcelable代码生成这里工具基于类中的字段生成一个 Android Parcelable插件...

    android-parcelable-intellij-plugin自动Parcelable方式序列化.rar

    Android开发中的Parcelable接口是用于对象序列化的一种高效方式,它比Java自带的Serializable接口性能更好,但编写起来较为繁琐。`android-parcelable-intellij-plugin`是一个IntelliJ IDEA的插件,它可以帮助开发者...

    Android Parcelable code generator

    在Android studio 4.0+以后在插件中已经搜索不到Android Parcelable code generator这个超级好用的插件了,唯一能使用的方式就是下载离线插件包,进行离线安装。 File -&gt; Settings -&gt; Pugins -&gt; Install plugin from...

    Android多进程通讯AIDL传递Parcelable对象

    在Android中,Parcelable是数据序列化的高级接口,它比Serializable效率更高。如果要在AIDL中传递自定义对象,这些对象必须实现Parcelable接口。实现Parcelable接口通常包括以下步骤: 1. 创建一个内部静态类`...

    Android 之 Parcelable 序列化

    本文将深入探讨Android中的Parcelable接口及其序列化流程。 首先,`Parcelable`接口是Android专门为Android系统内部使用和跨进程传递数据而设计的。相比`Serializable`,它的优点在于序列化和反序列化的速度更快,...

    android-parcelable-intellij-plugin.jar

    android parcelable code generator

    Android通过Parcelable和Serializable实现各种类型嵌套序列化

    Parcelable是Android系统提供的高效序列化方式,适用于内存内的数据交换,如Intent中的额外数据或者Fragment之间的通信。相比于Serializable,Parcelable的序列化和反序列化速度更快,但编写代码相对复杂。 1. 实现...

    android-parcelable-intellij-plugin Version 0.7.0

    在Android开发过程中,我们常常需要实现Parcelable接口来方便对象的序列化和反序列化,以便于在Intent、Binder等场景中传递数据。然而,手动实现Parcelable接口的代码繁琐且容易出错。为此,开发者们创建了一个名为...

    android-parcelable-intellij-plugin-0.7.1.zip(兼容Android studio4.1)

    该工具根据类中的字段生成一个Android Parcelable实现。该工具是同名原始插件的新版本 用法:在编辑器中按ALT +插入(或用于代码生成的等效键绑定),然后选择Parcelable。它允许您选择要打包的字段。

    Android中Parcelable的作用实例解析

    在Android开发中,Parcelable接口是用于对象序列化和反序列化的机制,相比于Java自带的Serializable接口,它在性能上有着显著的优势。当需要通过Intent在不同的Activity之间传递复杂对象,或者进行进程间通信(IPC)...

    android aidl Parcelable使用DEMO

    在Android中,Parcelable是比Serializable更高效的数据序列化方式,尤其适用于跨进程传递复杂对象。Parcelable接口提供了写入和读取数据到Parcel对象的方法,这使得对象可以在内存中被复制和传递。相比于...

    AndroidStudio自动生成parcelable插件

    AndroidStudio自动生成parcelable的插件

    Android中Parcelable的使用详解

    在Android开发中,数据传输和保存是常见的需求,而Parcelable接口就是Android系统提供的一种高效的数据序列化方式。相比Java标准的Serializable接口,Parcelable虽然使用起来更复杂,但是其性能优势明显,尤其适合于...

    Android Parcelable序列化自定义类集合在Activity间传递

    综上所述,要理解并实现Android中Parcelable序列化自定义类集合在Activity间传递,开发者需要掌握Parcelable接口的使用、自定义类的Parcelable实现、集合处理、Intent数据传递,以及可能借助的源码阅读和辅助工具。...

    android messager parcelable数据对象传递demo

    在Android开发中,跨进程通信(IPC)是一个重要的概念,特别是在设计大型、复杂的应用时。本教程将聚焦于使用`Messenger`和`Parcelable`接口来实现Android应用间的进程间通信。`Messenger`是Android系统提供的一种轻...

    parcelable android demo

    在Android开发中,Parcelable接口是用于对象序列化的一种高效机制,相比Java的Serializable接口,它在数据传输和存储时性能更高。"parcelable android demo"是一个实战项目,旨在帮助开发者理解并掌握Parcelable的...

    android_parcelable_code_general

    在Android开发中,数据传输和序列化是至关重要的任务,`Parcelable`接口是Android系统提供的一种高效的数据序列化方式,比传统的`Serializable`接口性能更优。`Android parcelable_code_general`是一个针对`...

    Android Parcelable code generator.zip

    在Android studio 4.0+以后在插件中已经搜索不到Android Parcelable code generator这个超级好用的插件了,唯一能使用的方式就是下载离线插件包,进行离线安装。

    安卓自带Parcelable序列化

    本篇文章将详细探讨`Parcelable`在Android中的使用方法,实例解析其序列化过程,并通过`parcelableDemo`项目进行实战演练。 首先,了解`Parcelable`的基本概念。`Parcelable`是Android中用于对象序列化的接口,它...

Global site tag (gtag.js) - Google Analytics