我正在开发一个应用程序,使用带有相关信息的firebase在网格视图中显示图像。
我注意到它使用了大量数据。我切换显示传入和传出的当前数据,以显示在我的通知中。即使图像已加载,它也在使用数据。
[下午5:13的数据使用情况]
[下午5:14的数据使用情况]
[下午5:16的数据使用情况]
[下午5:20的数据使用情况]
[图片已加载且仍在使用数据...]
[存储和尺寸中的图像]
我有一个读取我的数据库的活动,在那里我遍历数据库,然后我将数据解析为带有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上的滚动视图被移动时,它会使用数据..就像它重新下载图像一样。
答案 0 :(得分:-1)
使用一些标识逻辑将图像的URL保存在数据库中,然后使用Glide库从URL加载图像。它将负责内存和缓存图像。