### 目的
这篇文章主要是 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 即使不指定也是可以实现序列化的.那还写它干什么呢?
且听我慢慢道来