Jilles eu entendi o problema, porém, dado que está usando a API do Firebase, eu não consigo te orientar com precisão o que resolveria com qualidade. (não domínio da ferramenta :/)
O detalhe é que você está carregando as ocorrências todas as vezes que o onAuthStateChanged()
é chamado. Sendo assim você vai ter que mudar a sua estratégia para carregar as ocorrências, seja na chamada ou como vai adicionar as novas ocorrências. Aqui está o código que dá problema:
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
usuario = firebaseAuth.getCurrentUser();
if (usuarioLogado(usuario)) {
carregaDadosUsuario(usuario);
// aqui tá o problema
carregaOcorrencias(usuario);
} else {
// resto do código
}
}
Então tirei a chamada para fora:
private void inicializaFirebase() {
mFirebaseAuth = FirebaseAuth.getInstance();
// migrei pra cá
carregaOcorrencias(usuario);
mAuthStateListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
usuario = firebaseAuth.getCurrentUser();
if (usuarioLogado(usuario)) {
carregaDadosUsuario(usuario);
} else {
// resto do código
}
}
};
}
Funciona... Mas como falei, não mexo com a API do Firebase, então não sei o quão impactante é essa mudança. Sugiro testar e ver se atende a sua necessidade.
[]s