Android межпроцессное взаимодействие AIDL подробное объяснение (с исходным кодом)
обзор
AIDL: язык определения интерфейса Android, то есть язык определения интерфейса Android, помните, что это язык, цель которого предназначена для обеспечения межпроцессного взаимодействия, мы знаем, что каждый процесс Android выполняется в отдельной памяти, процесс Интеркод не может быть вызван счастливо, но в нашем развитии неизбежно будут некоторые сценарии, когда требуется вызов метода в реальном времени и передача данных.
Типы данных, поддерживаемые AIDL
- Основные типы данных JAVA (байтовый, короткий, int, длинный, float, double, boolean, char)
- Строка и Charsequence
- Список, поддерживает только ArrayList, где объекты должны быть сериализованы
- Карта, поддерживает только HashMap, где объекты должны быть сериализованы
- Объекты, которые реализуют интерфейс android.os.Parcelable
- AIDL автоматически сгенерированный интерфейс
Этапы реализации AIDL
Шаг 1: Создать проект
Поскольку AIDL является межпроцессным взаимодействием, мы должны сначала определить два проекта, которые мы определяем как:
Фишки OxygenOS о которых вы могли не знать
Клиент: AIDLClientDmeo
Сервер: AIDLServerDmeo (на сервере должна быть реализована служба Service)
Создать проект просто, и этот процесс здесь игнорируется;
Шаг 2: Определите интерфейс AIDL
Создайте файл, заканчивающийся на .aidl, через Android Studio. Чтобы понять, что два процесса могут вызывать друг друга, определите два aidl: IFirstAidlInterface.aidl и ICallbackInterface.aidl
package com.ailian.study; interface IServerListener < void backByServer(String param); > package com.ailian.study; import com.ailian.study.IServerListener; // Обратите внимание, что это необходимо ввести вручную interface IFirstAidlInterface < void callServer(String type,IServerListener callback); >
Замечания по поводу определения интерфейса AIDL:
- Интерфейс AIDL должен быть определен в двух процессах, которые взаимодействуют друг с другом, и путь к файлу и имя файла должны быть согласованы. Это очень важно, иначе связь будет невозможна;
Шаг 3: Компиляция
Четвертый шаг: AIDLServerDmeo реализует Сервис
На предыдущих этапах мы определили интерфейс AIDL в обоих проектах. Теперь мы можем реализовать Service на стороне сервера и предоставить его другим пользователям, чтобы они связывались;
В методе onBind есть возвращаемое значение объекта IBinder. Клиент может получить этот объект IBinder через интерфейс bindService. AidlServiceSub должен наследовать объект IFirstAidlInterface.Stub, автоматически сгенерированный IFirstAidlInterface:
Пятый шаг: AIDLServerDmeo реализует Сервис
Объявите службу, созданную на четвертом этапе, в файле AndroidManifest.xml AIDLServerDemo
Шок!!! Отличная новость для мастеров! Одно нажатие! Разблокировать любой Samsung Android 10/11/12
android: exported = ”true” // Запустить другое приложение для запуска
android: process = «: remote» // Запустить в отдельном процессе
// Вам нужно настроить действие для других процессов, чтобы запустить службу и передать этот параметр:
service android_name=».AidlService» android_exported=»true» android_process=»:remote»> intent-filter> action android_name=»android.ailian.aidl.test» /> category android_name=»android.intent.category.DEFAULT» /> intent-filter> service>
Шаг 6: AIDLClientDmeo запускает Сервис
После выполнения описанных выше пяти шагов клиент может установить канал связи с сервером через bindService:
Intent it = new Intent(); it.setAction(«android.ailian.aidl.test»); it.setPackage(«com.ailian.study.aidlserverdemo»); bindService(it, mserviceConnection, BIND_AUTO_CREATE);
Здесь есть mserviceConnection, который является обратным вызовом для вызова bindService.
Сделай это, давайте проверим это
Результаты валидации
aidlserverdemo
Скачать aidlserverdemo APK для Android — бесплатно — Последняя версия
Последняя версия
1 февр. 2023 г.
Разработчик
Google Play ID
Количество установок
App APKs
aidlserverdemo APK [ŠöţéŕŠéŕVîçé one two] APK SoterService APK
aidlserverdemo APP
предыдущие версии
aidlserverdemo 13 APK
1 февр. 2023 г. · Android 14+
aidlserverdemo 4.3.00.15 APK
30 сент. 2022 г. · Android 8.1+
aidlserverdemo 12 APK
22 июл. 2022 г. · Android 11+
Популярные запросы
LD Player — #1 Android Emulator
Лучший Эмулятор Андроида для ПК
Приложения · Hot
TikTok TikTok Pte. Ltd. · Социальные
Google Play Маркет Google LLC · Инструменты
自由浏览 Greatfire.org · Связь
VK VK.com · Социальные
Spaces — Зона обмена Artem Kalash · Социальные
Популярные
Google Play Маркет Google LLC · Инструменты
Google Account Manager Google · Инструменты
Сервисы Google Play Google LLC · Инструменты
TapTap (CN) Ewan Shanghai Network Technology co.,Ltd · Инструменты
Game Guardian 枫影(尹湘中) · Инструменты
TapTap Global TapTap · Инструменты
APK Editor SteelWorks · Инструменты
Aptoide TV Aptoide · Инструменты
Huawei AppGallery Huawei · Инструменты
SHAREit Smart Media4U Technology Pte.Ltd. · Инструменты
APKCombo Installer
Порядок установки XAPK, APKS, OBB?
Источник: apkcombo.com
Что такое AIDL в Android? Описание и пример использования
Продолжаем серию статей по службам в Android. В прошлых статьях мы познакомились с основными типами сервисов, включая пример работы с Messenger.
Если вы хотите понимать полную картину того, как работают службы, то посмотрите предыдущие материалы перед прочтением этой статьи.
Что такое AIDL в Android?
AIDL — это язык определения интерфейсов в Android. Этот мощный механизм связи между сервисом и клиентом может обрабатывать любую задачу удаленно с использованием технологии IPC (межпроцессного взаимодействия). AIDL обрабатывает данные между клиентами удаленно и безопасно, однако обязательным условием является то, что клиент сам должен связываться с этими службами.
Как работает AIDL?
AIDL поддерживает обработку данных используя Parcelable. Все происходит в механизме IPC между двумя различными приложениями.
Использование AIDL через IPC на простом примере
Предположим, у нас есть два андроид приложения: AppServer будет выполнять функции удаленного сервера, на котором запущена служба AIDL и приложение AppClient — собственно клиент, который посылает запросы к этому удаленному серверу. Что делает AIDL служба? Она получает какие-то данные от клиента, выполняет обработку и возвращает ответ/результат клиенту.
В этой статье мы рассмотрим AIDL на следующем примере:
Условная сложная задача: сложить два числа.
Схема работы: с помощью приложения-клиента отправляем два числа службе AIDL и получаем в ответ результат обработки.
Это простая задача для такого мощного механизма; в реальных приложениях вместо сложения чисел будет загрузка файлов, аудио или видео с интернета, но сути механизма и способа реализации это не меняет.
Пример работы с AIDL в Android
Для связи между двумя различными приложениями или процессами нам нужно создать файл AIDL в том же пакете внутри каждого из приложений в этом нам поможет Android Studio, которая умеет это делать из коробки.
Идем в Android Studio и создаем 2 приложения с названиями AppServer и AppClient.
Начнем с AppServer.
Смените вид проекта с Android на Project:
Создайте файлик AIDL с именем ISumNumsAIDL с помощью команды: New -> AIDL -> AIDL file
Теперь создадим AidlService, который нужно наследовать от класса Service.
Источник: javadevblog.com