2013-09-18 7 views
6

Если у вас есть Служба, которая часто (каждую секунду или полсекунды) отправляет обновления, есть ли плюсы/минусы для использования Broadcasts vs регистрации Listeners (создаваемого вами интерфейса), которые сохраняются в виде списка в Службе и рассылать обновления таким образом?android broadcastreceiver vs listeners

Я думаю с точки зрения использования памяти, потребления батареи и т. Д. Я знаю, что это немного разомкнуто, однако документация не так много, поэтому они могут быть равными, но если кто-то знает определенный ответ или имеет некоторый вклад, было бы оценено.

+0

Как вы думаете, что собираетесь подавать слушателю услуги? – Pankaj

+0

@ Pankaj легко: получить интерфейс службы через связующее и вызвать что-то вроде requestUpdates (например, LocationManager). – Rob

+0

Возможный дубликат [В чем разница между прослушивателем и приемником (Android)?] (Http://stackoverflow.com/questions/14794684/what-is-the-difference-between-a-listener-and-a -receiver-android) – Andreas

ответ

0

Не думайте об этом, это действительно небольшое количество энергии и perfomanse. Основное различие между широковещательными передачами и прослушивателями - это способ, которым ваши сообщения будут отправлены. Если это трансляция, ваши плюсы будут идти в другую систему, они перейдут непосредственно к вашему классу.

+2

Существует старая поговорка, в которой говорится, что 90% времени, то же самое 10% кода выполняется. Слушатели, которые я имею в виду, выполняются сотни раз в час, поэтому в этом случае даже повышение эффективности на 1% будет иметь значение :) – StackOverflowed

0

В любом случае вы должны создать BroadcastReciever для получения обновлений (так что это все еще слушатель). Но в этом случае os заботится назвать их вместо прямых вызовов слушателя от службы. Не уверен в ценности разницы, но прямые вызовы выглядят быстрее и меньше потребляют память/батарею из этого pov.

3

По моему опыту, если вы будете часто отправлять уведомления, выберите слушателей. Я реализовал несколько BroadcastReceivers по одному и тому же вопросу, но некоторые сообщения потерялись. Я думаю, это связано с тем, что BroadcastReceivers не ставят очередь на входящие намерения, а вместо этого бросают тех, кто прибывает, но все еще «выполняет работу со старым». Конечно, трансляция намерений может быть более расслабляющей, так как вам не нужно ... подключать службу и каждую часть прослушивания вашего приложения, но в моем случае (несколько сообщений в секунду) слушатели были правильным выбором.

+0

Мне любопытно, есть ли какая-либо документация о том, когда сообщения теряются и почему. – StackOverflowed

Смежные вопросы