Почему broadcastIntent не является статическим методом? - PullRequest
0 голосов
/ 06 мая 2019

Я очень плохо знаком с Android. Я пытаюсь в основном использовать Intents для построения системы событий, запуская Intent из простого старого объекта Java в другой простой старый объект Java, который действует как обработчик событий.

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

Почему broadcastIntent является методом Context, а не "свободной процедурой" (статический метод)? Можете ли вы описать ситуацию, когда context1.broadcastIntent(intent) и context2.broadcastIntent(intent) будут иметь разные эффекты?

1 Ответ

1 голос
/ 06 мая 2019

мне очень странно, что мне нужен контекст для передачи намерения.

sendBroadcast() на Context для устройства -уровнятрансляций.Такие звонки транслируются для каждого приложения на устройстве.

Это не то, что вам нужно.

Для меня Намерение должно быть просто сообщением, которое я отправляю и волшебным образомполучает от любых приемников вещания, которые я зарегистрировал где-либо в моем приложении.

То, что вы описываете, это шина событий в процессе.LocalBroadcastManager реализует один , хотя для него тоже требуется Context (возможно, связано с попыткой использовать основной поток приложения; я забыл причину).Существуют и другие реализации шины событий, такие как EventBus для greenrobot, которые не требуют Context.

. Можете ли вы описать ситуацию, когда context1.broadcastIntent (намерение) и context2.broadcastIntent (намерение)) будет иметь разные эффекты?

Что ж, поскольку Context является интерфейсом, нет необходимости в двух Context объектах для совместного использования реализации общего метода.Однако для Context нет метода broadcastIntent().

В общем, хотя Context является божественным объектом.Одна из причин, по которой многие вещи проходят через Context, заключалась в том, что «божественный» контекстный объект был популярным шаблоном проектирования еще в середине 2000-х годов, когда впервые разрабатывался Android.

...