Deep Dive into Android IPC/Binder Framework



For those of you who missed my presentation on Binder at AnDevCon IV, you may want to check the repeat of my talk on Android IPC at Android Builders Summit 2013. I updated my slides a bit, and this time around my delivery is a bit more condensed.

Here is the abstract:

Inter Process Communication (IPC) has been a part of Android since 1.0, and yet most of us take it for granted. Intents, content providers, and system service managers hide the IPC infrastructure provided by Binder, but without it, the Android OS and our apps would simply fall apart. Binder/IPC is the glue that holds it all together. It enables Android's memory management, security sandboxing, efficient threading, and countless other features on the Android platform.

In this talk we will first go wide and discuss IPC on Android in general. We'll see what it makes possible not just for system framework APIs, but also for us, Android developers, who can take advantage of it to build efficient suites of Android apps. We'll tackle both Java and C++, standard and custom data types, sync and async execution modes, wide-open and secured services.

We'll then go deep and get to the bottom of Binder. We'll discuss how it works from the kernel driver all the way to the application code, including its threading context, discovery mechanisms, security implications, instrumentation and debugging, latency, and comparisons to other frameworks. Finally, we'll discuss its limitations and how to best deal with situations where we need to efficiently exchange large memory blobs or files with remote processes.

Binder/IPC certainly does not fall into the new or sexy category, but if you want to learn about how Android really works or build apps that talk to each other efficiently, then you should check this out.

 

 
Published February 18, 2013