当我将手机的“本地日期”设置更改1个或更多个月,然后重新启动使用Firebase实时数据库的android应用后,它不会从数据库中加载数据,并且会永远加载下去。 为什么会这样? Firebase在获取数据之前会检查设备的本地时间吗?
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);
}
});`
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
答案 0 :(得分:1)
如评论中所述,最可能的原因与SSL有关。 SSL的日期不正确不能很好地发挥作用,因此无法安全地连接到Firebase。解决此问题的一种可能方法是通过http连接到Firebase,但是1)它不安全2)我不确定是否仍支持它。