android– 使用应用程序上下文加载Glide图像

android– 使用应用程序上下文加载Glide图像,第1张

概述我在我的Android应用程序中使用滑动来加载图像,以避免任何崩溃我正在使用应用程序上下文加载图像.这会对应用程序和内存的性能产生什么影响?解决方法:Whatwillbeeffectofthisonperformanceofapplicationandmemory?Glide提供了许多.with()方法,原因如下:它遵循生命周期

我在我的Android应用程序中使用滑动来加载图像,以避免任何崩溃我正在使用应用程序上下文加载图像.这会对应用程序和内存的性能产生什么影响?

解决方法:

What will be effect of this on performance of application and memory?

GlIDe提供了许多.with()方法,原因如下:它遵循生命周期.

想象一下动态添加到Activity的片段.在其onCreateVIEw方法中,它启动了3MB图像的GlIDe加载.现在,如果用户按下后退按钮并删除片段或整个活动已关闭,该怎么办?

>如果你使用(getActivity().getApplicationContext())什么都不会发生,所有3MB的数据都被下载然后被解码,缓存,甚至可能被设置为ImageVIEw,然后被垃圾收集,因为它的唯一引用是来自GlIDe internals.
>如果你使用((Fragment)this)GlIDe订阅Fragment的生命周期事件,一旦Fragment停止,任何未完成的请求应该暂停;当销毁时,所有待处理的请求都将被清除.这意味着图像下载将在中途停止,并且该死片段将不再使用更多资源.
>如果你使用(getActivity())GlIDe订阅Activity的生命周期事件,同样的事情发生在上面,但只有当Activity被停止或销毁时.

因此,最佳做法是使用最接近的可能上下文/片段来避免未使用的请求完成! (还有一种手动停止加载的方法:GlIDe.clear(ImageVIEw | Target).)

要在实践中应用它,尽可能尝试使用(this),但是当它不是,如在适配器或集中式图像加载方法中,传递RequestManager滑动作为参数并使用glIDe.load(…,例如:

static loadImage(RequestManager glIDe, String url, ImageVIEw vIEw) {    glIDe.load(url).into(vIEw);}

或适配器:

class MyAdapter extends WhichEveryOneYouUse {    private final RequestManager glIDe;    MyAdapter(RequestManager glIDe, ...) {        this.glIDe = glIDe;        ...    }    voID getVIEw/onBindVIEwHolder(... int position) {        // ... holder magic, and get current item for position        glIDe.load... or even loadImage(glIDe, item.url, holder.image);    }}

并使用Activity / Fragment中的这些:

loadImage(GlIDe.with(this), url, findVIEwByID(R.ID.image));// orList.setAdapter(new MyAdapter(GlIDe.with(this), data));

总结

以上是内存溢出为你收集整理的android – 使用应用程序上下文加载Glide图像全部内容,希望文章能够帮你解决android – 使用应用程序上下文加载Glide图像所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1102739.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存