Я не смог сделать LiveData для правильного сброса, поэтому я перестал перезапускать активность. Я решил сделать это, потому что это довольно редкая ситуация в моем случае использования приложения.
Приемник вещания зарегистрирован в деятельности onCreate и незарегистрирован в onDestroy.
Вот трансляция приемника, который слушает, если дата изменилась:
// Broadcast receiver for detecting change of day (need to refresh MainActivity)
private val mDayChangedReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
if (intent.action == Intent.ACTION_DATE_CHANGED) {
isActivityRefreshNeeded = true
Log.d("mDayChangedReceiver", "Received DAY_CHANGED broadcast")
}
}
}
Затем я проверяю onResume MainActivity, если булево значение isActivityRefreshNeeded равно true. Если это так, я сбрасываю активность:
// If User has changed settings and navigated via back button, or day changed, refresh activity
when (isActivityRefreshNeeded) {
true -> {
isActivityRefreshNeeded = false
refreshActivity()
}
}
Это не лучшее решение, но, как я уже сказал, это довольно редкая ситуация, когда требуется это обновление.
Если у кого-то есть лучшее решение, я буду рад его увидеть и реализовать.