Android的IPC机制
Android的IPC机制上篇:简单介绍了Bundle、文件共享、Messenger的简单实现
中篇详细介绍了如何用 Kotlin
实现 Android 的 AIDL
下篇将简单介绍 ContentProvider
和 Socket
??IPC(Inter-ProcessCommunication),含义为进程间通信或跨进程通信,是指两个不同进程之间进行数据交换的过程。
??任何操作系统都有其相应的IPC机制,例如:Windows 上可以通过剪贴板、管道和邮槽等来进行进程间通信。Linux 上可以通过命名管道、共享内存、信号量等来进行进程间通信。Android 是一种基于 Linux 内核的移动操作系统,对于 Android 来说,它也有其特有的进程间通信方式。
五、ContentProvider
??ContentProvider
(内容提供器)是 Android 中提供的专门用于不同应用程序间实现数据共享的方式。它提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能保证被访数据的安全性,适合进程间通信。它的底层实现是 Binder
,系统做了封装,它的使用比 AIDL
更简单。
??实现一个自定义的 ContentProvider 需要实现的主要方法如下:
onCreate()
:在创建 ContentProvider 时调用初始化query()
:查询指定 Uri 的数据insert()
:向指定Uri 的ContentProvider中添加数据delete()
:删除指定 Uri 的数据update()
:更新指定 Uri 的数据getType()
:返回指定的 Uri 中的数据MIME类型
?? 数据访问的方法 insert,delete 和 update 可能被多个线程同时调用,此时必须保证线程是安全的。
??
六、Socket
??Socket
也称 “套接字”
??Socket
的使用类型主要有两种:
- 流式套接字(
streamsocket
) :基于TCP
协议,采用 流的方式 提供可靠的字节流服务 - 用户数据报套接字(
datagramsocket
):基于UDP
协议,采用 数据报文 提供数据打包发送的服务