【发布时间】:2019-03-11 09:58:55
【问题描述】:
我的 Firebase 存储的当前架构结构如下:
Photos_folder/
-->用户 ID 01 --> profile_picture_folder/--> image/jpeg (URI)
-->用户 ID 02
-->用户 ID 03
--> 等等……
在我的适配器中,我有一个 onBindViewHolder 方法,我传递我的 URI 并通过 Firebase 存储网络检索 uri 图像:
@Override
public void onBindViewHolder(@NonNull final CommentViewHolder holder, int position) {
Uri imageUri = Uri.parse(list.get(position).getImageUri());
photosStorageReference = FirebaseStorage.getInstance().getReference();
photosStorageReference.child(Constant.PHOTOS_FIREBASE).child(userId)
.child(Constant.USER_PROFILE_PICTURE_FOLDER).child(imageUri.getLastPathSegment())
.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
SimpleTarget target = new SimpleTarget<Bitmap> (200, 200) {
@Override
public void onResourceReady(@NonNull Bitmap bitmap, @Nullable Transition<? super Bitmap> transition) {
imageView.setImageBitmap(bitmap);
}
};
GlideApp.with(context).asBitmap().load(uri).diskCacheStrategy(DiskCacheStrategy.DATA).apply(
RequestOptions.circleCropTransform()).into(target);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.e(TAG, e.getMessage());
}
});
}
问题:
一切正常,但是,onSuccess 方法正在主线程中完成工作并且它是同步的,因此应用程序在每次图像检索之间等待。
有没有办法更快地从 Firebase 检索图像?
可能就像在更高的参考级别建立与 Firebase 的连接,例如:
gs://appname-b4532.appspot.com/Photos/
连接打开后,遍历用户 ID 并在遍历子路径时检索他们各自的图像?
userId01/Profile_picture_folder/image_01
userId02/Profile_picture_folder/image_02
userId03/Profile_picture_folder/image_03
..ect
【问题讨论】:
标签: android firebase android-recyclerview firebase-storage android-glide