第二章——Parcelable接口的使用(跨进程,Intent传输)

一、Parcelable类(Android独有的)

简介:Parcelable是一个接口。

作用:是Android提供的序列化接口,实现序列化和反序列化的操作。

二、跨进程使用

步骤一:创建Book类继承Parcelable接口

public class Book implements Parcelable {

    private String mBookName;
    private int mBookId;
 /**
   *准备:创建Book类,并继承Parcelable接口
*/
    public Book(int bookId, String bookName) {
        mBookId = bookId;
        mBookName = bookName;
    }

    @Override
    public String toString() {
        return mBookId+""+mBookName;
    }
} 

步骤二:会提示必须重写接口的方法

describeContents():返回当前对象的描素内容,如果含有文件描述符(什么叫文件描述符)则返回1,否则返回0,一般都返回0(所以不用考虑咯)。

writeToParcel(Parcel out,int flags):将对象写入序列化

Parcel out :系统提供的输出流,将成员变量存储到内存中。

int flags:0或1,1表示当前对象需要作为返回值保存(不明白),基本上所有情况都为0,(所以说可以不用考虑咯)

//接上面的代码
   @Override
   public int describeContents() {
         return 0;
   }//描述文件,现在只要返回0就行

    @Override
    public void writeToParcel(Parcel dest, int flags) {
         dest.writeInt(mBookId);
         dest.writeString(mBookName);
    }//将当前对象写入序列化结构

步骤三:创建反序列化对象 Parcelable.Creator<T>接口:专门用于反序列化

重写该接口的方法:

createFromParcel(Parcel in):系统提供的输入流,从序列化的对象获取数据。

newArray(int size):创建该对象的数组  (暂时感觉没用)

注:反序列化的时候,要按照序列化放入数据的顺序获取数据,否则会收不着值。

//一定需要按照这种格式书写 public static final Parcelable.Creator<Book>  CREATOR
  public static final Parcelable.Creator<Book>  CREATOR  = new  Parcelable.Creator<Book>(){

        @Override
         public Book createFromParcel(Parcel source) {
             return new Book(source);
         }//获取输入流,反序列化对象

        @Override
         public Book[] newArray(int size) {
             return new Book[0];
         }
 };

//创建构造方法,实例化对象
 private Book (Parcel in){
      mBookId = in.readInt();
      mBookName = in.readString();
 }

3.原理

Parcelable利用Parcel out 将数据存储到内存中,然后通过Parcel in 从内存中获取数据。

三、Intent之间传递Parcelable类(就是各个Activity传递对象的方法)

根据上面创建Parcelable的方式,创建该类,然后应用Intent传输就可以了。

时间: 2024-08-02 23:41:00

第二章——Parcelable接口的使用(跨进程,Intent传输)的相关文章

第二章 Servlet 接口(JavaTM Servlet 规范3.1 )

Servlet 接口 Servlet 接口是 Java Servlet API 的核心抽象.所有 servlet 要么直接要么间接地实现该接口,通过扩展一个类实现此接口.在 Java Servlet API 中有两个类 GenericServlet 和 HttpServlet 实现了此 Servlet 接口.为了更多目的,开发者将扩展 HttpServlet 来实现他们的 servlet. 2.1 请求处理方法 为处理客户端请求,基础 Servlet 接口定义了一个 service 方法.ser

我的学习之路_第二章_接口/多态

接口 (1)当抽象类中的方法都是抽象的时候,java就提供了一种新的表现形式:接口.接口是功能的集合 接口不能创建对象 (2)格式: 父接口: public interface Inter { } 子类: public class InterImpl implements Inter { } (3)接口的特点: A:不需要被abstract修饰. B:类实现接口,可以单实现,还可以多实现. C:接口可以继承接口,可以单继承,也可以多继承. D:接口与父类的功能可以重复,均代表要具备某种功能. (

Android开发艺术探索——第二章:IPC机制(中)

Android开发艺术探索--第二章:IPC机制(中) 好的,我们继续来了解IPC机制,在上篇我们可能就是把理论的知识写完了,然后现在基本上是可以实战了. 一.Android中的IPC方式 本节我们开始详细的分析各中跨进程的方式,具体方式有很多,比如可以通过在Intent中附加extras来传递消息,或者通过共享文件的方式来共享数据,还可以采用Binder方式来跨进程通信,另外,ContentProvider天生就是支持扩进程访问的,所以通过Socket也可以实现IPC,上述的各种方法都能实现I

Binder核心机制分析揭秘跨进程得实现原理

前言 想写篇关于Binder的文章,可对其一无所知,无从下手.在阅读了大量的优秀文章后,心惊胆战的提笔,不怕文章被贻笑大方,怕的是误人子弟!望各位大佬抽空阅读本文的同时,能够对文章的知识点持怀疑态度,共同探讨,共同进步! 一.序列化 日常开发中,通过Intent携带数据跳转Activity时,数据通常要通过实现Serializable或Parcelable接口,才能在被Intent所携带,而Serializable接口和Parcelabel接口主要是完成对象的序列化过程.将对象持久化到设备上或者

第二章——Serializable的使用(跨进程使用和Intent的传递)

一.Serializable类 简介:Serializable是一个接口. 作用:是JAVA提供的序列化接口,实现序列化和反序列化的操作 二.跨进程使用 1.事前准备 创建Book类并继承Serializable接口 2.序列化与反序列化

【朝花夕拾】一篇文章搞懂Android跨进程通信

前言 只要是面试中高级工程师岗位,Android跨进程通信就是最受面试官青睐的知识点.Android系统的运行由大量相互独立的进程相互协助来完成的,所以Android进程间通信问题,是做好Android开发高级工程师必须要跨过的一道坎.如果您还对这方面的知识还做不到如数家珍,那就和我一起来攻克它吧! 本文主要包含了如下内容: 其行文脉络大致如下,希望能加深读者对这方面内容的记忆:(1)Android基于Linux系统,所以先说系统进程相关知识和Linux IPC.(2)总结Android的IPC

Android开发艺术探索——第二章:IPC机制(上)

Android开发艺术探索--第二章:IPC机制(上) 本章主要讲解Android的IPC机制,首先介绍Android中的多进程概念以及多进程开发模式中常见的注意事项,接着介绍Android中的序列化机制和Binder,然后详细的介绍Bundle,文件共享,AIDL,Messenger,ContentProvider和Socker等进程间通讯的方法,为了更好的使用AIDL进行进程间通讯,本章引入了Binder连接池的概念,最后,本章讲解各种进程间通信方式的优缺点和使用场景,通过本章,可以让读者对

Android艺术开发探索——第二章:IPC机制(下)

Android艺术开发探索--第二章:IPC机制(下) 我们继续来讲IPC机制,在本篇中你将会学习到 ContentProvider Socket Binder连接池 一.使用ContentProvider ContentProvider是Android中提供的专门用来不同应用之间数据共享的方式,从这一点来看,他天生就是适合进程间通信,和Messenger一样,ContentProvider的底层实现同样也是Binder,由此可见,Binder在Android系统中是何等的重要,虽然Conten

Android开发艺术-第二章 IPC 机制

2.1 Android IPC 简介 IPC 意为进程间通信或者跨进程通信,线程是 CPU 调度的最小单元,是一种有限的系统资源.进程一般指一个执行单元.任何操作系统都需要相应的 IPC 机制.如 Windows 上可以通过剪切板 管道 和邮槽来进行:Linux 上可以通过命名管道 共享内容 信号量等来进行.在 Android 中最有特色的进程间通信方式就是 Binder 了,同时也支持 Socket 实现任意两个终端之间的通信. 2.2 Android 中的多进程模式 (1) 通过给四大组件指