检查Firebase中是否存在值存在一个奇怪的问题

时间:2018-01-16 14:09:55

标签: java android firebase firebase-realtime-database

我正在检查数据库中是否有两个值,如果它们是我带来的值并将它们存储到内部存储器中。现在,当我第一次启动应用程序时工作正常,因为我没有数据库中的数据所以我输入我的else语句,如果数据不存在,我会做另一件事。

但是,当我从我的设置中删除应用数据或重新安装时,如果数据存在,它将不会检查我的Firebase,而是会在else语句中输入,我不知道为什么。

    private void ChequearSiExistenDatos(){

            //chequear if exists la data de las referencias de los archivos de usuario , si existen continuar con la app y bajar esos sino traer el del locale
            mDatabase.child("Users").child(mAuth.getCurrentUser().getUid()).child("URL_UserFiles").child("URL_car_"+sharedPrefs.getString(getString(R.string.str_idioma),"en")).addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(final DataSnapshot dataSnapshotCar) {

                    mDatabase.child("Users").child(mAuth.getCurrentUser().getUid()).child("URL_UserFiles").child("URL_model_"+sharedPrefs.getString(getString(R.string.str_idioma),"en")).addListenerForSingleValueEvent(new ValueEventListener() {
                        @Override
                        public void onDataChange(DataSnapshot dataSnapshotModel) {
                        if (dataSnapshotCar.getValue()!=null && dataSnapshotModel.getValue()!=null) {

//DOWNLOAD FROM FIREBASE
}
else
{
//DO SOMETHING LOCALLY
}

1 个答案:

答案 0 :(得分:2)

代码中的问题是由于SharedPreferences。 SharedPreferences不会在应用卸载时保留,始终会被删除。因此,在卸载应用程序后尝试使用function sigFig($value, $digits) { if ($value == 0) { $decimalPlaces = $digits - 1; } elseif ($value < 0) { $decimalPlaces = $digits - floor(log10($value * -1)) - 1; } else { $decimalPlaces = $digits - floor(log10($value)) - 1; } $answer = round($value, $decimalPlaces); return $answer; } 中的变量不是一个好选择。

解决这个问题,更好的选择是将所需的数据存储到数据库中。即使您卸载该应用程序也会存在。