## 1、线程间通信 参考:[android线程间通信的四种实现方式](https://blog.csdn.net/liuxingyuzaixian/article/details/78893392 "android线程间通信的四种实现方式") 1. 通过Handler机制 1. runOnUiThread方法 1. View.post(Runnable r) 1. AsyncTask 注意:通常我们所说的线程间通信都是主线程和子线程的通信,还有一种是子线程与子线程间的通信。 ## 2、进程间通信 参考:[Android 进程间通信](https://blog.csdn.net/hello_1995/article/details/122128589 "Android 进程间通信") 1. 使用 Bundle 的方式 1. 使用文件共享的方式 1. 使用 Messenger 的方式 1. 使用 AIDL 的方式 1. 使用 ContentProvider 的方式 1. 使用 BroadcastReceiver 的方式 1. 使用 Socket 的方式 ## 3、Bundle 和 Binder 傻傻分不清楚 由于单词长得差不多,总是分不清楚谁是谁,这次就来给它区分一下。 #### 3.1 Bundle Bundle主要用于传递数据;它保存的数据,是以key-value(键值对)的形式存在的。 经常使用Bundle在Activity之间传递数据,传递的数据可以是boolean、byte、int、long、float、double、string等基本类型或它们对应的数组,也可以是对象或对象数组。当Bundle传递的是对象或对象数组时,必须实现Serializable 或Parcelable接口。 Bundle也是进程间通信的一种方式: 由于Activity,Service,Receiver都是可以通过Intent来携带Bundle传输数据的,所以我们可以在一个进程中通过Intent将携带数据的Bundle发送到另一个进程的组件。 缺点:无法传输Bundle不支持的数据类型 #### 3.2 Binder 参考[Android——Binder机制](https://blog.csdn.net/ly0724ok/article/details/117566381/ "Android——Binder机制") Binder是什么? - 机制:Binder是一种进程间通信的机制 - 驱动:Binder是一个虚拟物理设备驱动 - 应用层:Binder是一个能发起进程间通信的JAVA类 - Binder就是Android中的血管,在Android中我们使用Activity,Service等组件都需要和AMS(system_server)进行通信,这种跨进程的通信都是通过Binder完成。 - Activity,Service等组件和AMS不是同一个进程,其实也是多进程通信。 - Android系统中,涉及到多进程间的通信底层都是依赖于Binder IPC机制。 最后编辑:2023年03月10日 ©著作权归作者所有
最新回复