【发布时间】:2018-05-18 08:49:19
【问题描述】:
我有一个使用 Google Firebase 的 Android 应用。
我需要下载一张带有随机 ID 的图片。
我有一个函数必须返回随机图片的位图。在这个函数中,我从一个单独的数据库条目中读取图片的数量,然后生成一个从 1 到图片数量的随机 ID。代码如下:
Random rand = new Random();
DatabaseReference amountRef = dbref.child("amount");
amountRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
amount = dataSnapshot.getValue(Long.class);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
long random = rand.nextLong() % amount + 1;
该函数稍后会下载图像并生成并返回位图。问题是Listener代码与其他代码和行并行执行
long random = rand.nextLong() % amount + 1;
产生除以零错误,因为数量变量尚未更新。我也不能将所有代码都放在 OnDataChange 中,因为我需要返回位图。请告诉我如何立即检索数据或从侦听器内部返回位图。
【问题讨论】:
标签: java android firebase firebase-realtime-database