【问题标题】:android-Picasso callback prevents garbage collectingandroid-Picasso 回调防止垃圾收集
【发布时间】:2021-01-18 20:56:09
【问题描述】:

我在我的 android 应用程序中使用 Picasso 库来加载图像。我需要在图像加载成功时得到通知,所以我使用:

Picasso.get().load(imageURL).into(imageView, new Callback() {
        @Override
        public void onSuccess() {
            // do sth
        }

        @Override
        public void onError(Exception e) {

        }
    });

正如 Picasso 库文档中提到的,The Callback param is a strong reference and will prevent your Activity or Fragment from being garbage collected. 由于这个原因,我的应用程序使用的内存在替换了一些片段后增长了很多——这些片段都使用了回调。

在onSuccess方法运行后如何摆脱回调并允许碎片被垃圾回收?

【问题讨论】:

    标签: android android-fragments garbage-collection picasso


    【解决方案1】:

    使用毕加索时添加标签:

            Picasso.get().load("imageURL").tag("custom_tag").into(imageView, new Callback() {
            @Override
            public void onSuccess() {
                // do sth
            }
    
            @Override
            public void onError(Exception e) {
    
            }
        });
    

    然后在替换/删除您的片段或退出您的活动之前,通过调用取消任务:

    Picasso.get().cancelTag("custom_tag");
    

    请注意,callback 将在调用 onSuccess() 后自动删除。因此,当回调尚未完成时,提供的解决方案很有用。

    【讨论】:

      猜你喜欢
      • 2011-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-15
      • 2013-03-19
      • 2017-07-13
      相关资源
      最近更新 更多