Основываясь на этом сообщении из документов AIDL, для AIDL существует только одна действительная учетная запись.Почему AIDL необходим для поддержки многопоточности?
Использование AIDL необходимо, только если вы разрешаете клиентам из разных приложений получать доступ к вашей службе для IPC и хотите обрабатывать многопоточность в вашей службе.
Что именно означает «обрабатывать многопоточность» в этом контексте? Это больше, чем просто наличие службы с несколькими работающими потоками?
Документов дальнейшего состояние:
, если вы хотите выполнить IPC, но не нужно обрабатывать многопоточность, реализовать интерфейс, используя Посланник.
Почему Messenger неприемлемо для службы, поддерживающей многопоточность? Не удалось ли связь между потоками обрабатываться внутри мессенджера (без использования общей памяти)?
Проблема в том, что этот код будет значительно сложнее, чем с помощью Handler?
Итак, у вас есть много возможностей для того, чтобы у многих клиентов услуги были экземпляры мессенджеров и отправлены сообщения службе, но эти сообщения не будут обрабатываться одновременно? – diedthreetimes
Нет, это не нормально, так как это может быть не потокобезопасно в зависимости от того, как вы его реализовали. Я имею в виду, что если вы используете «Messenger», вы должны заботиться о потенциальной безопасности потоков. – m0skit0
Хммм, здесь, хотя безопасность потоков произошла после обработки сообщений. Из [docs] (http://developer.android.com/guide/components/bound-services.html#Messenger) кажется, что многие потоки отправляют сообщения через мессенджер в порядке. (См. Примечание слева). Самое большое различие заключается в том, что AIDL автоматически создаст пул потоков для вас. Уровень управления параллелизмом почти одинаковый. – diedthreetimes