我正在检查数据库中是否有两个值,如果它们是我带来的值并将它们存储到内部存储器中。现在,当我第一次启动应用程序时工作正常,因为我没有数据库中的数据所以我输入我的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
}
答案 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;
}
中的变量不是一个好选择。
解决这个问题,更好的选择是将所需的数据存储到数据库中。即使您卸载该应用程序也会存在。