Saturday, February 6, 2010

Android Architecture Patterns

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.


  1. Share memory using ashmem and binder in the android framework:

  2. Hi, Daniel
    I wonder if you could tell me how you log the whole methods called during "startActivity", This will Help me a lot when reading the android source code. :)

  3. Android Binder IPC internals:


Note: Only a member of this blog may post a comment.