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 LocalBroadcastManagerpor outras implementações do padrão observável. Dependendo do seu caso de uso, as opções adequadas podem ser LiveDataou fluxos reativos.
Vantagem do LiveData
Você pode estender um LiveDataobjeto usando o padrão singleton para agrupar os serviços do sistema para que eles possam ser compartilhados no seu aplicativo. O LiveDataobjeto se conecta ao serviço do sistema uma vez e, em seguida, qualquer observador que precise do recurso pode apenas observar o LiveDataobjeto.
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 Lifecycleobjeto 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 LiveDataobjetos reconhecerem o ciclo de vida significa que você pode compartilhá-los entre várias atividades, fragmentos e serviços.