Подтвердить что ты не робот

Как намерения работают внутри страны?

Я разработал приложение, и я выполнил некоторые тесты. Эти тесты состоят в отправка данных из одной фоновой службы на другой фон оказание услуг. Все данные были получены, когда скорость передачи была низкой (4 цента/сек). Однако, когда я увеличил скорость передачи (8 и 12 intents/second), некоторые данные (обычно 2- 3%) были не полученной службой назначения.

Все намерения транслировались, а службы выполнялись локально.

Может ли кто-нибудь сказать мне, как ОС рассматривает намерения и работает весь механизм, чтобы найти почему данные не были получены получателем?

С уважением,

4b9b3361

Ответ 1

Прежде всего, я бы рекомендовал связать службу, а затем использовать Handlers для IPC. Хороший пример можно найти здесь: http://developer.android.com/guide/components/bound-services.html Это намного быстрее и надежнее.

О том, как Intents работают внутри, вы можете посмотреть исходный код: https://github.com/android/platform_frameworks_base/blob/master/core/java/android/app/ContextImpl.java#L893

Ответ 3

Одна из возможных причин заключается в том, что синхронное взаимодействие между процессами Android. Процесс вызывающего клиента блокируется на время ответа на серверный процесс. Ваша служба с таймером блокируется в течение (очень малых) периодов времени, что может привести к поведению, которое вы наблюдали.

Источник: Android Binder - Интерактивная коммуникация Android от Thorsten Schreiber, стр. 11 - 13.

EDIT. Я опубликовал ответ, потому что комментарии Криса Стреттона и Жоау Нунеса ценны.