Основной вопрос: могу ли я использовать 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));
}
}
Использование Broadcast
не является хорошим шаблоном и снижает эффективность вашего приложения. Попробуйте вместо этого использовать EventBus. Легко использовать с меньшими проблемами.
Открывается ли ваша деятельность, в которой требуются дополнительные функции намерения, после выбора даты? Примечание.
BroadcastManager
- это дорогостоящий ресурс системы Android (Потребляет память), поэтому старайтесь избегать его использования только для передачи своей логики через него, вместо этого вы можете использовать для этого другую логику.