使用Glide在图像视图中加载图像

问题描述 投票:1回答:1

我正在开发一个应用程序,它显示从我的firebase数据库加载的图像。我为此目的使用了Glide。

我正在使用一个按钮,点击该按钮将打开一个新活动,显示从网址获取的图像。如果网址加载正确,图像加载完美但如果我之间取消,则应用程序崩溃。为什么会发生这种情况呢?是否有任何选项可以使用滑动将图像保存在缓存中,这样它就可以加载一次并显示而无需从firebase中获取它。

这是我从url显示图像的代码:

public void showImage(){
    mStorageRef.child("TimeTable").getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
        @Override
        public void onSuccess(Uri uri) {
            url = uri.toString();
            RequestOptions options = new RequestOptions().centerCrop().placeholder(R.mipmap.ic_launcher).error(R.mipmap.ic_launcher_round);
            Toast.makeText(TimeTable.this, uri.toString(),Toast.LENGTH_SHORT).show();
            Glide.with(TimeTable.this).load(url).apply(options).into(image);
        }
    });
}

这是错误日志,当我在完全加载图像之前关闭活动时。

enter image description here

请询问是否需要进一步的细节。

java android firebase firebase-storage android-glide
1个回答
1
投票

您可以使用Glide缓存加载的图像。我指的是tutorial here,你可以在那里学习使用Glide进行图像缓存的基础知识。

现在关于崩溃的问题,它清楚地表明你正在尝试从已经被破坏的活动中加载某些东西。当您在加载图像的位置添加了firebase侦听器时,您需要在离开活动时销毁侦听器。

您可以考虑使用onPauseonDestroy函数来处理删除侦听器操作。检查Firebase的removeEventListener功能。

但是,我建议使用加载器的活动范围版本,以便Firebase任务自己处理这些事情。请参阅answer here

© www.soinside.com 2019 - 2024. All rights reserved.