Что происходит быстрее с помощью посланника или намерения?

Если у вас есть действия, которые обмениваются данными с сервисом или другой службой, связывающейся с услугой, какой «протокол связи» быстрее доставляет свое сообщение связующей стороне?

Сообщения, которые передаются в / из службы, являются целыми или предметными объектами.

У меня возникают трудности с выбором того, какой метод выполняется быстрее, если вы хотите отправить массовые данные другой службе или активности. Я не могу найти информацию о скорости обработки намерений или сообщений, отправленных Messenger.

Кто-нибудь сталкивается с этим?

Возможно, вы захотите рассмотреть LocalBroadcastManager.sendBroadcastSync () http://developer.android.com/reference/android/support/v4/content/LocalBroadcastManager.html#sendBroadcastSync(android.content.Intent)

Если ваши действия и службы находятся в одном и том же процессе, лучше использовать LBM, поскольку он быстрее и безопаснее. И он дает вам возможность отправлять широковещательную «синхронизацию», что означает, что она обрабатывается немедленно, поэтому она, вероятно, будет квалифицироваться как «самая быстрая», даже если сообщения / обработчик в противном случае быстрее, чем намерения / приемники.

Для Intent IntentResolver требуется время, чтобы найти подходящую цель, поскольку она будет искать список получателей. Этот случай будет зависеть от вашей системы и количества приемников, IntentResolver, необходимых для поиска подходящего приемника.

С другой стороны, если вы отправляете Message through Handler , он будет использовать очередь сообщений одного и того же потока, и производительность этого события будет зависеть от доступного сообщения в этой очереди.

Похоже, что сообщение будет быстрее, чем Intent или, по крайней мере, теоретически, но вы всегда можете написать короткую программу, чтобы увидеть результат.

Но, если у вас есть много данных для отправки из службы в Activity, вы можете подумать о другом альтернативном решении, в котором вы записываете данные в хранилище персистентности и после того, как просто сообщите своей деятельности, что данные готовы. После получения уведомления, активность считывает данные из источника данных. Таким образом, если пользователь получает телефонный звонок или нарушается между вами, данные безопасны.