Every Android application runs in its own process. So one application cannot access another application’s memory. So to let this happen we need to decompose their objects into primitives that the operating system can understand and marshall the objects across that boundary for you.
The code to do that marshaling is tedious to write, so Android handles it for you with AIDL. Inter-Process Communication (IPC) can be handled easily through AIDL.