Android from the foundation · Puzzle 4 of 16
The post office carries letters
system_server and your app are separate processes, so the town hall can't just reach in. The kernel carries its messages.
The problem
In puzzle 3, system_server decided to move your Activity to "resumed". But system_server is a process, and so is your app, and in puzzle 0 you saw that one process can't touch another's memory. So how does the town hall's decision get into your app?
See it
The town hall, system_server, and your app are two separate processes, both standing on the kernel.
Step 1 of 4The town hall writes a message: "resume your screen". But it can't reach into your app's memory. Predict: who can?
Step 2 of 4Only the kernel reaches every process. It's built from parts that each do one job; each such part is called a driver. The one that carries messages is Binder: the post office. It carries them both ways.
Step 3 of 4Binder delivers the message into your app. Every message between your app and the town hall travels this way.
Step 4 of 4
The building block
Only the kernel can reach into every process (puzzle 1). So the kernel carries the message.
The kernel is made of parts that each do one job; such a part is called a driver. The driver that carries messages between processes is called Binder. Every message between your app and system_server travels through Binder, in both directions.
The analogy
The post office. The town hall writes a letter; it can't walk into your house, but the post office can deliver to every house on the street.
Check yourself
Sources
What you now know
Between processes, nothing is reached directly. Binder, a driver in the kernel, carries the message, like a post office.
Answer every question above correctly to unlock the next puzzle.