进程通信有很多方法,很多技巧。 Android另辟蹊径,用自己的理解写出了 Binder
那到底什么是Binder?
Binder 的作用是进程间通信,如果我们自己做该怎么做呢 ?
第一步,要先建立个共用之处。 无论是管道还是socket,首要之事是有机会进行通信。
Binder 利用的是 Linux Driver. Binder 底层以驱动形式出现,提供公用接口,满足条件的哪个进程都可以来访问。
底层只需要做些数据包传输,传入再传出,不需要复杂处理,简单易用。
第二步, Binder之上,建立守护线程,进程。 这就是所谓的 ProcessState 和 IPCThreadState。
每次加一个服务,建立一个Thread 守护Binder 驱动。 并通过守护线程发送命令。
第三步, 在守护线程基础上,建立服务端和调用端, BnBinder 和 BpBinder。 Binder proxy 和Binder Native。
在服务端,建立ServiceManager,即可完成管理功能。