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.
I had the privilege of talking about Binder at AnDevCon IV on Dec 5th, 2012, so I thought it would make sense to post my slides and screencast here.
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.
- Deep Dive into Android IPC/Binder Framework - screencast: