Firebase存储图像使用过多数据

时间:2017-09-25 18:15:59

标签: android firebase firebase-storage android-gridview

我正在开发一个应用程序,使用带有相关信息的firebase在网格视图中显示图像。

我注意到它使用了大量数据。我切换显示传入和传出的当前数据,以显示在我的通知中。即使图像已加载,它也在使用数据。

[下午5:13的数据使用情况]

[下午5:14的数据使用情况]

[下午5:16的数据使用情况]

[下午5:20的数据使用情况]

[图片已加载且仍在使用数据...]

[存储和尺寸中的图像]

link to all images

我有一个读取我的数据库的活动,在那里我遍历数据库,然后我将数据解析为带有gets和sets的对象类。

 found_animal animal = new found_animal(imgUrl
             ,animalBreed 
             ,animalCoat 
             ,animalColour 
             ,animalEarType 
             ,animalGender 
             ,animalIDTag, 
             animalSize, 
             animalTail, 
             animalType, 
             latitude, 
             longitude, 
             name, 
             number,Date); 

然后我有一个使用数组适配器扩展此类的类

public class found_animal_array extends ArrayAdapter<found_animal> 

我使用此代码下载图像

    found_animal card = getItem(position);
    viewHolder.imgUrl= card.getImgUrl();
String ref = "myref" + viewHolder.imgUrl;
        storageRef.child(ref).getBytes(Long.MAX_VALUE).addOnSuccessListener(new OnSuccessListener<byte[]>() {
            @Override
            public void onSuccess(byte[] bytes) {

                final  Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0,bytes.length);
            viewHolder.im.post(new Runnable() { //im is a imageview
                @Override
                public void run() {

                    viewHolder.im.setImageBitmap(bitmap);
                }
            }) ;


        }
    }).addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception exception) {
            Log.i("something went wrong", exception.getMessage());
        }
    });

我刚刚重新运行该活动,并注意到当gridview上的滚动视图被移动时,它会使用数据..就像它重新下载图像一样。

1 个答案:

答案 0 :(得分:-1)

使用一些标识逻辑将图像的URL保存在数据库中,然后使用Glide库从URL加载图像。它将负责内存和缓存图像。