Last week I took a deeper look at Android's core architecture. I was especially interested in how Android sets up its software component containers as runtime systems for activities, services and content providers. So I investigated what the Activity.startActivity method does to start an Activity inside of a newly created Zygote child process.
The Zygote architecture pattern allows Android to set up software component containers (OS processes that contain a Dalvik VM together with the Android framework classes) within milliseconds.
Android‘s Binder runtime helps to make these software component containers interoperable in a very efficient way. This reminds me very much of modern microkernel operating systems like QNX Neutrino RTOS, Miray Symobi or Microsoft Singularity.
For more details check out the following document that takes you on a walk through Android's source code.