java - 使用 Glide 在 ImageView 中加载图像

标签 java android firebase firebase-storage android-glide

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

我正在使用一个按钮,单击该按钮将打开一个新 Activity ,其中显示从 url 获取的图像。如果 url 加载正确,图像加载完美,但如果我在两者之间取消,应用程序崩溃。为什么会发生,还有,是否有任何选项可以使用 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);
        }
    });
}

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

enter image description here

请询问是否需要任何进一步的详细信息。

最佳答案

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

现在关于崩溃问题,它清楚地表明您正试图从一个已经被破坏的 Activity 中加载一些东西。由于您在加载图像的位置添加了一个 firebase 监听器,因此您需要在离开 Activity 时销毁该监听器。

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

但是,我建议使用加载程序的 Activity 范围版本,以便 Firebase 任务自行处理这些事情。请参阅answer here .

关于java - 使用 Glide 在 ImageView 中加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52022565/

相关文章:

java - 按字段对对象列表进行排序,如果为空,则按另一个字段排序

android - 付款后取消安卓广告

android - OnclickListener 在 fragment ListView 中不起作用

iOS:注册 token 无效。检查 token 格式

android - 如何在flutter中将列表对象发布到cloud firestore firebase

java - 无法在 Android 中的 ScheduledThreadPoolExecutor 的帮助下定期运行任务

java - 如何知道递归文件扫描的当前文件夹深度

java - 使用 Java 禁用 Windows 自动更新

android - 如何同时滚动 recyclerView 和底部按钮

swift - 如何检查用户的电子邮件是否已验证?