diff --git a/src/android/aidl/example-service/service.md b/src/android/aidl/example-service/service.md index 4081cfb99496..c99935d2e8b2 100644 --- a/src/android/aidl/example-service/service.md +++ b/src/android/aidl/example-service/service.md @@ -23,6 +23,15 @@ _birthday_service/Android.bp_: - Point out the path to the generated `IBirthdayService` trait, and explain why each of the segments is necessary. +- Note that `wishHappyBirthday` and other AIDL IPC methods take `&self` (instead + of `&mut self`). + - This is necessary because binder responds to incoming requests on a thread + pool, allowing for multiple requests to be processed in parallel. This + requires that the service methods only get a shared reference to `self`. + - Any state that needs to be modified by the service will have to be put in + something like a `Mutex` to allow for safe mutation. + - The correct approach for managing service state depends heavily on the + details of your service. - TODO: What does the `binder::Interface` trait do? Are there methods to override? Where source?