There are at least three things Binder doesn't do, compared with other systems capable of providing similar functionality:
• Binder does not manage version information.
• Binder does not traverse networks.
• It does not enable applications to discover interfaces.
Some inter-process communications systems enable the two sides of an inter-process API to negotiate version compatibility. Binder, along with the higher-level mechanisms built on Binder, does not do this. This means APIs built on Binder should remain compatible with older versions if the APIs are open for other applications to use, and it means that consumers of remote APIs should be resilient to failures caused by incompatibilities. Make sure to handle those exceptions!
Binder-based inter-process communication is also limited to a single node: it won't take you across the network to other Android systems. This is a limitation, to be sure, but it is appropriate to a mobile handset, where endpoint-to-endpoint data connections are rarely used and often blocked by the routing in a mobile data network.
Was this article helpful?