【发布时间】:2018-02-03 17:22:26
【问题描述】:
界面如下:
public interface BitmapCallBackInterface {
void onCallBack(Bitmap bitmap);
}
这是方法并调用它:
public void downloadImagesFromFireStorage(String imgName, final BitmapCallBackInterface bitmapCallBackInterface) {
StorageReference storageRef = FirebaseStorage.getInstance()
.getReferenceFromUrl("gs://fake-mc-app.appspot.com").child("imgs").child(imgName + ".png");
final long ONE_MEGABYTE = 1024 * 1024;
storageRef.getBytes(ONE_MEGABYTE).addOnSuccessListener(new OnSuccessListener<byte[]>() {
@Override
public void onSuccess(byte[] bytes) {
Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
bitmapCallBackInterface.onCallBack(bitmap);
}
});
}
编辑
叫它:
for (i = 0; i < nameList.size(); i++) {
String couponName = nameList.get(i);
storageHandler.downloadImagesFromFireStorage(imgName, new BitmapCallBackInterface() {
@Override
public void onCallBack(Bitmap bitmap) {
insertImg(couponName, bitmap); // store image into SQLite
}
});
}
getDataFromSQLite();
// and then display Bitmaps to the a list of ImageView
编辑
有人告诉我,线程会在接收回调后继续,所以我编写了一个 for 循环从 firebase-storage 下载所有图像,将它们全部存储到 SQlite 数据库中,然后将它们检索出来并显示到 ImageView。但似乎在图像下载完成之前线程仍在继续?我该如何解决?也许我误解了我学到的东西?
我最想做的是,下载几张图片,下载完成后刷新listview
【问题讨论】:
标签: java android firebase firebase-storage