Мое приложение проверяет наличие определенных данных в базе данных Firebase Realtime с добавлением addListenerForSingleValueEvent в ссылку на базу данных. Эмулятор, в котором я начал проект, работает нормально и отлично извлекает данные, но когда я меняю эмулятор (скажем, я переключаюсь на PIXEL 3XL), слушатель не работает. Я видел в другом вопросе stackoverflow, что у кого-то была такая же проблема, и база данных извлекла данные, но через долгое время. кто-нибудь знает, почему это произошло? Следует ли мне продолжать разработку с эмулятором по умолчанию и не беспокоиться о том, что база данных реального времени не работает на другом эмуляторе? Вы можете объяснить, почему это происходит?
Я использую это в манифесте: ...<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>...
Gradle
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath "com.android.tools.build:gradle:4.0.1"
classpath 'com.google.gms:google-services:4.3.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
gradle (Module)
apply plugin: 'com.google.gms.google-services'
android {
compileSdkVersion 30
buildToolsVersion "30.0.1"
defaultConfig {
applicationId "..."
minSdkVersion 28
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.google.firebase:firebase-database:19.3.1'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}
Редактировать 1: Добавлен код (он работает на эмуляторе по умолчанию, пиксель 3, но не на другом). Журналы нужны только для того, чтобы увидеть, делает ли код то, что он должен.
DatabaseReference database, newRef;
protected void onCreate(Bundle savedInstanceState) {
(...)
database = FirebaseDatabase.getInstance().getReference();
newRef = database.child(option).child(strSelectedYear).child(strSelectedMonth).child(strSelectedDay);
newRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot d: dataSnapshot.getChildren()) {
hours.remove(d.getKey());
Log.i("hAI FRAAA", d.getKey());
}
String msg = "";
for (int j = 0;j<hours.size();j+=1)
msg += " " + hours.get(j);
Log.i("Free hours", msg);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}