当设备的本地日期明确更改时,为什么Firebase停止同步?

时间:2018-07-28 16:58:27

标签: android firebase firebase-realtime-database firebase-console

当我将手机的“本地日期”设置更改1个或更多个月,然后重新启动使用Firebase实时数据库的android应用后,它不会从数据库中加载数据,并且会永远加载下去。 为什么会这样? Firebase在获取数据之前会检查设备的本地时间吗?

这是Android应用程序的onCreate() MainActivity

在设置中更改日期(至少10天或更多天),然后关闭并重新打开该应用程序后,进度栏永远不会消失。 甚至没有调用onCancelled函数。

    final ProgressBar progressBar = findViewById(R.id.progress_bar);
    final TextView textView = findViewById(R.id.textView);
    progressBar.setVisibility(View.VISIBLE);

    FirebaseDatabase database = FirebaseDatabase.getInstance();
    DatabaseReference myRef = database.getReference("message");
    myRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            String value = dataSnapshot.getValue(String.class);
            textView.setText(value);
            progressBar.setVisibility(View.INVISIBLE);
        }

        @Override
        public void onCancelled(DatabaseError error) {
            progressBar.setVisibility(View.INVISIBLE);
        }
    });`

应用程序级别gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.example.akzarma.testapplication"
        minSdkVersion 15
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
    implementation 'com.google.firebase:firebase-database:11.8.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

apply plugin: 'com.google.gms.google-services'

下面是该项目的Github副本链接,这只是一个示例应用程序,可从Firebase实时数据库中获取数据。https://github.com/akzarma/testApp

1 个答案:

答案 0 :(得分:1)

如评论中所述,最可能的原因与SSL有关。 SSL的日期不正确不能很好地发挥作用,因此无法安全地连接到Firebase。解决此问题的一种可能方法是通过http连接到Firebase,但是1)它不安全2)我不确定是否仍支持它。