Olá, estou tendo uma grande dificuldade para obter valores do banco de dados externo: Tenho uma classe que carrega dados do firebase, em tempo de execução chamo o seguinte metodo para atualizar os dados
private int retorno = 0;
public int getData() {
mFirebaseRemotVAlorDoSatoshi.fetch(0).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
mFirebaseRemotVAlorDoSatoshi.activateFetched();
retorno = (int) mFirebaseRemotVAlorDoSatoshi.getLong("data");
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
if (!isDeviceConnected()) {
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
getData();
}
};
android.support.v7.app.AlertDialog.Builder builder = new android.support.v7.app.AlertDialog.Builder(context);
builder.setCancelable(false);
builder.setMessage(context.getString(R.string.prompt__erro_ao_obter_valor_do_satoshi_na_nuvem)).setTitle(context.getString(R.string.aviso_de_conexao)).setPositiveButton(context.getString(R.string.ok), dialogClickListener)
.show();
} else {
getData();
}
}
});
return retorno;
}
o problema é que esse método se conecta a internet, ou seja, demora pra dar um retorno e oque recebo quando chamo esse método é 0. Acredito que não se trate de criar threads e sincroniza-las, mais também n tenho muita experiencia com threads então minha opnião n vale nada.
Como faço para que na minha primeira classe eu só passe para a proxima linha de codigo quando esse metodo me retornar o valor correto?
Obrigado a todos.