Я хочу, чтобы каждое приложение могло отправлять данные в мою службу. Поэтому мне нужно взаимодействие между процессами. На каждой странице я могу найти предложения использовать Messenger, AIDL или Intents (BroadcastReceiver). До сих пор я мог понять, построив некоторые тестовые приложения, так это то, что BroadcastReceiver чрезвычайно медленный, и сообщения могут потеряться без уведомления при отправке с несколькими потоками внутри цикла while(true)
. AIDL и Messenger не только сложны в реализации (услуга необходима, связующее, ...), но и могут обеспечить странное поведение, например, при отправке несколькими потоками, что приводит к удалению RemoteException (!!! FAILED BINDER TRANSACTION !!!) с AIDL, когда используя ключевое слово oneway. Я хочу гарантировать, что доставка гарантирована. Есть ли причина использовать oneway
, когда доставка должна быть гарантирована?Android ipc LocalSocket vs Binder (AIDL)
Тем не менее, LocalSocket кажется чрезвычайно простым в использовании (нет необходимости в службе, работает так же, как java-сокет). Клиентские приложения могут только открыть LocalSocket, подключиться к указанному адресу, а затем while(true) outputstream.writeObject();
Есть ли недостатки при использовании LocalSocket, потому что на странице разработчика Android говорится: «Некоторые приложения пытаются реализовать IPC с использованием традиционных технологий Linux, таких как сетевые сокеты и общие файлы. Мы настоятельно рекомендуем вам использовать вместо функции Android системы для IPC», но не от дальнейших комментариев по этому