Android-AIDL的简单使用



### 目的

这篇文章主要是 Android 中 AIDL 的简单使用,算是为了下一篇 Android IPC 做一个铺垫

### 背景

Android 中的 AIDL 主要是用来做 Android IPC(进程间的通信)的.可以说是系统帮我们封装好的一个工具.

1.多进程的实现

既然是进程间的通信肯定就要有两个进程.

这里为了方便两个进程在同一个 app 中来实现,其本质和两个 app 是一样一样的.

要想在 app 中启用多线程,只有一种方式,那就是为 Android 的四大组件指定 process属性.

process的属性值要怎么写呢?

只有图中的两种方式

1.冒号+单词(字母也可以)

2.包名+点(英文中的句号)+单词(字母也可以)
2.序列化

在 Android 中实现序列化有两种方式

2.1 Serializable (java 中的序列化方式)

看一个典型的例子

可以看到非常简单,只需要实现 Serializable 接口就可以了.

那么怎么序列化和反序列化呢?

也非常简单

Book book = new Book("1", "Android");
try {
        ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("android.txt"));
        out.writeObject(book);
        out.close();

        ObjectInputStream in = new ObjectInputStream(new FileInputStream("android.txt"));
        Book newBook = (Book) in.readObject();
        in.close();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }

上面的代码是以本地文件为媒介实现的序列化和反序列化.

但是有一点需要注意

虽然 book 和 newbook 的内容完全一样,但是两者并不是同一个对象了.

这里还有一个要提一下,可能有眼尖的童鞋已经发现了.就是 serialVersionUID 是干什么呢.

serialVersionUID 即使不指定也是可以实现序列化的.那还写它干什么呢?

且听我慢慢道来