Inside the Android AccountManager
-
Upload
samael-wang -
Category
Technology
-
view
281 -
download
2
Transcript of Inside the Android AccountManager
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
BinderNative 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