localbroadcastmanager foi descontinuado, use implementações do padrão observável.
androidx.localbroadcastmanager
está sendo reprovado na versão 1.1.0
Razão
LocalBroadcastManager
é um barramento de eventos para todo o aplicativo e abrange violações de camada no seu aplicativo; qualquer componente pode ouvir eventos de qualquer outro componente. Ele herda limitações desnecessárias de casos de uso do BroadcastManager do sistema; os desenvolvedores precisam usar o Intent, mesmo que os objetos vivam em apenas um processo e nunca o abandonem. Por esse mesmo motivo, ele não segue o BroadcastManager.
Isso resulta em uma experiência confusa para o desenvolvedor.
Substituição
Você pode substituir o uso LocalBroadcastManager
por outras implementações do padrão observável. Dependendo do seu caso de uso, as opções adequadas podem ser LiveData
ou fluxos reativos.
Vantagem do LiveData
Você pode estender um LiveData
objeto usando o padrão singleton para agrupar os serviços do sistema para que eles possam ser compartilhados no seu aplicativo. O LiveData
objeto se conecta ao serviço do sistema uma vez e, em seguida, qualquer observador que precise do recurso pode apenas observar o LiveData
objeto.
public class MyFragment extends Fragment {
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
LiveData<BigDecimal> myPriceListener = ...;
myPriceListener.observe(this, price -> {
// Update the UI.
});
}
}
O observe()
método passa o fragmento, que é uma instância de LifecycleOwner
, como o primeiro argumento. Fazer isso indica que esse observador está vinculado ao Lifecycle
objeto associado ao proprietário, o que significa:
Se o objeto Ciclo de Vida não estiver em um estado ativo, o observador não será chamado, mesmo que o valor seja alterado.
Após a destruição do objeto Ciclo de Vida, o observador é removido automaticamente
O fato de os LiveData
objetos reconhecerem o ciclo de vida significa que você pode compartilhá-los entre várias atividades, fragmentos e serviços.