Inside the Android
AccountManager
Account
Manager
Account
Manager
Service
Authenticator
Integrated App
Account
Manager
Account
Manager
Service
Authenticator
Integrated App
Zoe, Backup, …
Account
Manager
Account
Manager
Service
Authenticator
Integrated App
HTC Account
Zoe, Backup, …
Account
Manager
Account
Manager
Service
Authenticator
Integrated App
HTC Account
Zoe, Backup, …
system_server
Application Process
Account
Manager
Account
Manager
Service
Authenticator
Integrated App
HTC Account
Zoe, Backup, …
system_server
Application Process
Account
Manager
Account
Manager
Service
Authenticator
Integrated App
HTC Account
Zoe, Backup, …
Method
Invocation
system_server
Application Process
Account
Manager
Account
Manager
Service
Authenticator
Integrated App
HTC Account
Zoe, Backup, …
Binder IPC
Method
Invocation
system_server
Application Process
Account
Manager
Account
Manager
Service
Authenticator
Integrated App
HTC Account
Zoe, Backup, …
Binder IPC
Binder IPC
Method
Invocation
system_server
http://www.nds.rub.de/media/attachments/files/2012/03/binder.pdf
Binder
Native IPC mechanism
on Android.
Implemented as kernel
driver and the Binder
framework.
http://www.nds.rub.de/media/attachments/files/2012/03/binder.pdf
Binder
Binder client uses a proxy approach.
Native IPC mechanism
on Android.
Implemented as kernel
driver and the Binder
framework.
http://www.nds.rub.de/media/attachments/files/2012/03/binder.pdf
Binder
The transaction data is called Parcel.
Java objects implementing Paracelable interface can
be converted to Parcels.
Transaction data limit is around 1MB.
Native IPC mechanism
on Android.
Implemented as kernel
driver and the Binder
framework.
http://www.nds.rub.de/media/attachments/files/2012/03/binder.pdf
Binder
Binder server spawns binder threads to handle the
incoming requests automatically.
Native IPC mechanism
on Android.
Implemented as kernel
driver and the Binder
framework.
Android Interface Definition
Language (AIDL)
• To make customized Binder interface.
• Default supported data types include primitives,
String, CharSequence, List, Map.
• Non-primitive type parameters require in / out or inout
tag.
• Custom data types must implement Parcelable, and
declare a corresponding AIDL file.
http://developer.android.com/guide/components/aidl.html
frameworks/base/core/java/android/accounts/IAccountManager.aidl
frameworks/base/core/java/android/accounts/Account.aidl
predefined in
Binder framework
generated from
AIDL
frameworks/base/core/java/android/app/ContextImpl.java
AccountManager
(binder client side) initialization.
frameworks/base/core/java/android/app/ContextImpl.java
AccountManager
(binder client side) initialization.
frameworks/base/core/java/android/accounts/AccountManager.java
AccountManager
(binder client side) initialization.
AccountManagerService
(binder server side) initialization.
frameworks/base/core/java/android/accounts/
AccountManagerService.java
AccountManagerService
(binder server side) initialization.
frameworks/base/core/java/android/accounts/
AccountManagerService.java
Simplified addAccount()
Simplified addAccount()
Binder IPC
Simplified addAccount()
Binder IPC Binder IPC
AccountManagerFuture
main thread
main thread
bkg thread
main thread
main thread
bkg thread
main thread
bkg thread
main thread
Callback through IPC
frameworks/base/core/java/android/accounts/
IAccountManagerResponse.aidl
AccountManager.AmsTask.Response
Application Process
Account
Manager
Account
Manager
Service
Authenticator
Integrated App
Asynchronized Binder IPC call
through interface IAccountManager;
Response returned through interface
IAccountManagerResponse
frameworks/base/core/java/android/accounts/IAccountAuthenticator.aidl
AccountManagerService.Session
AccountManagerService
(binder client side) initialization.
ServiceConnection
ServiceConnection
always on main thread
AbstractAccountAuthenticator
(binder server side) initialization.
frameworks/base/core/java/android/accounts/
AbstractAccountAuthenticator.java
Callback through IPC
frameworks/base/core/java/android/accounts/
IAccountAuthenticatorResponse.aidl
AccountManagerService.Session
Application Process
Account
Manager
Account
Manager
Service
Authenticator
Integrated App
Asynchronized Binder IPC call
through interface IAccountAuthenticator;
Response returned through interface
IAccountAuthenticatorResponse

Inside the Android AccountManager