Использование broadcastreceiver для передачи intent.extras

Основной вопрос: могу ли я использовать BroadcastReceiver для передачи намерения с дополнительными функциями в Activity?

Настройка: у меня есть записанная дата из фрагмента DatePicker, и я хочу убедиться, что время Millis передается другому действию, но это действие не вызывается сразу из этого действия, которое содержит этот фрагмент

Я пробовал использовать следующий код в действии с фрагментом datePicker:

Intent intent = new Intent().putExtra(EVENT_MILLIS, eventDateMillis); 
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);

в «приемной» деятельности:

@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstatnceState);
setContentView...
LocalBroadcastManager.getInstance(this).registerReceiver(mReceiver, new IntentFilter(EVENT_MILLIS));

и мой призыв инициировать приемник:

private BroadcastReceiver mReceiver = new BroadcastReceiver () {
@Override
public void onReceive(Content content, Intent intent) {
   setReceivedDate(intent.getLongExtra(EVENT_MILLIS,0));
}
}

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

Jeel Vankhede 13.09.2018 21:15
0
1
32
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Использование Broadcast не является хорошим шаблоном и снижает эффективность вашего приложения. Попробуйте вместо этого использовать EventBus. Легко использовать с меньшими проблемами.

Другие вопросы по теме