Q:

Como habilitar persistencia Firebase offline

Estou com problemas para habilitar a persistencia de dados offline do firebase no meu app. O problema é o seguinte, tenho uma classe auxiliar chamada ConfiguraçãoFirebase que inicia os objetos necessários do firebase, para fazer as consultas e salvar dados utilizo o DatabaseReference ou Query, e gostaria que quando fizesse a leitura do banco ele disponibilizasse aqueles dados offline, segue um exemplo das classe utilizadas:
public final class ConfiguracaoFirebase {

private static FirebaseDatabase database;
private static FirebaseStorage storage;
static DatabaseReference reference;
private static StorageReference storageReference;

public ConfiguracaoFirebase(){

}

public static DatabaseReference getFirebaseReference(){
    if (reference == null){
        reference = FirebaseDatabase.getInstance().getReference();
    }

    return reference;
}

public static StorageReference getStorageReference(){
    if (storageReference == null){
        storage = FirebaseStorage.getInstance();
        storageReference = storage.getReferenceFromUrl("gs://herdeirosapp.appspot.com/").child("GALERIA");
    }
    return storageReference;
}

public static FirebaseDatabase getDatabase(){
    if (database != null){
        database = FirebaseDatabase.getInstance();
        database.setPersistenceEnabled(true);
        //FirebaseDatabase.getInstance().setPersistenceEnabled(true);
    }
    return database;
}
}

A função da classe modelo que salva os dados no realtimeDatabase:
public void salvarPlacar(){
    //Pegando o ano atual
    Date ano = Calendar.getInstance().getTime();
    DateFormat format = new SimpleDateFormat("yyyy");
    String anoRetiro = format.format(ano);

    String cripto = CriptografiaBase64.criptografarData(atualizacao);

    DatabaseReference reference = ConfiguracaoFirebase.getFirebaseReference();
    reference.child("RETIRO")
            .child(anoRetiro)
            .child("PLACAR")
            .child(cripto)
            .setValue(this);
}

E a activity que traz os dados nesse exemplo faço uma query para trazer o dados mais recente, e não estou conseguindo colocar ConfiguracaoFirebase.getDatabase().setPersistenceEnabled(true); corretamente
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_retiro);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    //INSTANCIANDO OS COMPONENTES
    cardPlacar = (CardView) findViewById(R.id.card_placar);
    btCardapio1 = (Button) findViewById(R.id.bt_dia1_cardapio);
    btCardapio2 = (Button) findViewById(R.id.bt_dia2_cardapio);
    btCardapio3 = (Button) findViewById(R.id.bt_dia3_cardapio);
    tvCardapio = (TextView) findViewById(R.id.tv_cardapio);
    tvCronograma = (TextView) findViewById(R.id.tv_cronograma);
    tvPlacarA = (TextView) findViewById(R.id.tv_placarA);
    tvPlacarB = (TextView) findViewById(R.id.tv_placarB);
    tvAtualizado = (TextView) findViewById(R.id.tv_atualizacao_placar);

    //Adicionando fontes externas
    Typeface fonteDescricao = Typeface.createFromAsset(getAssets(), "fonts/Royalacid.ttf");
    tvCardapio.setTypeface(fonteDescricao);
    tvCronograma.setTypeface(fonteDescricao);

    //Eventos
    btCardapio1.setOnClickListener(this);
    btCardapio2.setOnClickListener(this);
    btCardapio3.setOnClickListener(this);
    cardPlacar.setOnClickListener(this);
    mostrarPLacar();
}

//Atualiza o placar no momento da abertura da tela
private void mostrarPLacar() {
    //Pegando o ano atual
    Date ano = Calendar.getInstance().getTime();
    DateFormat format = new SimpleDateFormat("yyyy");
    String anoRetiro = format.format(ano);

    ConfiguracaoFirebase.getDatabase().setPersistenceEnabled(true);

    queryFirebase = ConfiguracaoFirebase.getFirebaseReference()
            .child("RETIRO")
            .child(anoRetiro)
            .child("PLACAR")
            .orderByChild("atualizacao")
            .limitToLast(1);

    queryFirebase.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot data: dataSnapshot.getChildren()){
                Placar placar = data.getValue(Placar.class);
                tvPlacarA.setText(placar.getPlacarEmanuel());
                tvPlacarB.setText(placar.getPlacarGideoes());
                tvAtualizado.setText("Atualizado em: "+ placar.getAtualizacao());
            }

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            Toast.makeText(RetiroActivity.this, "Erro na leitura do banco, contate o admin!", Toast.LENGTH_SHORT).show();
        }
    });
}

Nesse caso o metodo onCreate chama a função que traz o placar mais atualizado, já tentei colocar setPersistenceEnabled(true) dentro da classe ConfiguracaoFirebase e chamar via getDatabase, já tentei colocar no metodo oncreate e em ambos nao obtive sucesso, o 

A:

Fiz algumas pesquisas na internet e consgui acertar de acordo com a estrutura do projeto que estou construindo.
Para solucionar o problema e ativar a persistencia de dados offline do Firebase eu precisei adicionar na classe ConfiguracaoFirebase o seguinte método:
public static FirebaseDatabase getDatabase(){
    if (database == null){
        database = FirebaseDatabase.getInstance();
        database.setPersistenceEnabled(true);
    }
    return database;
}

E com isso eu faço a chamada dele na minha activity principal do projeto, a que nunca é fechada pois nas demais toda vez que eu saia da activity e voltava um crash fechava o app, então para resolver todos os problemas eu faço a chamada uma unica vez no onCreate da MainActivity dessa forma:
FirebaseDatabase database = ConfiguracaoFirebase.getDatabase();

