IPC跨进程通信学习计划(一)

进程间通信的意义在于进程间数据交换以实现同步。

看了主席的进阶书,感觉自己的视野新打开了一些什么,挺奇特的感觉。

  • 先了解Serializable接口
    序列化接口没有方法或字段,仅用于标识可序列化的语义。
    JavaAPI解释:
    An empty marker interface for classes that want to support serialization and deserialization based on the ObjectOutputStream and ObjectInputStream classes. Implementing this interface is enough to make most classes serializable. If a class needs more fine-grained control over the serialization process (for example to implement compatibility with older versions of the class), it can achieve this by providing the following two methods (signatures must match exactly):
    private void writeObject(java.io.ObjectOutputStream out) throws IOException
    private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException

大意:
基于ObjectOutputStream和ObjectInputStream类来支持序列化和反序列化的类一个空标记接口, 实现这个接口就足以使大多数类可序列化了。 如果类需要对序列化过程进行更精细的控制(例如实现与旧版本的兼容性),则可以通过提供以下两种方法(签名必须完全匹配)来实现:
private void writeObject(java.io.ObjectOutputStream out)throws IOException
private void readObject(java.io.ObjectInputStream in)throws IOException,ClassNotFoundException

-Parcelable接口 (android.os)

public class MyParcelable implements Parcelable {
     private int mData;
     //序列化功能
     public void writeToParcel(Parcel out, int flags) {
         out.writeInt(mData);
     }
     //反序列化功能
     public static final Parcelable.Creator<MyParcelable> CREATOR
             = new Parcelable.Creator<MyParcelable>() {
         public MyParcelable createFromParcel(Parcel in) {
             return new MyParcelable(in);
         }

         public MyParcelable[] newArray(int size) {
             return new MyParcelable[size];
         }
     }

     private MyParcelable(Parcel in) {
         mData = in.readInt();
     }
     public int describeContents(){
         return 0;
     }
 }

关于跨进程通信,很喜欢一句话:

Binder是客户端和服务端进行通信的媒介,当bindService的时候,服务端会返回一个包含了服务端业务
调用的Binder对象,通过这个Binder对象,客户端就可以获取服务端提供的服务或者数据,这服务包括普通
服务和基于AIDL的服务。

Binder主要用在Service上,包括AIDL和Messenger。Binder牵扯甚广,不论是深度还是广度都很有挑战性。下篇开始正式走进这部分知识~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值