android – 毕加索和上下文

android – 毕加索和上下文,第1张

概述我最近一直在毕加索作为图像加载程序库玩.我使用它与匕首和OkHtttp. 我关于这个图书馆的唯一问题是上下文的使用和图书馆通过构建器的实例化. 我不完全确定需要的上下文(找不到文档)以及我们应该使用哪个上下文(ApplicationContext或ActivityContext?)以及为什么. 看看例子(btw伟大的示例应用程序看到所有这一切结合)u2020由杰克·沃顿,只有毕加索的一个实例,它创 我最近一直在毕加索作为图像加载程序库玩.我使用它与匕首和OkHtttp.

我关于这个图书馆的唯一问题是上下文的使用和图书馆通过构建器的实例化.

我不完全确定需要的上下文(找不到文档)以及我们应该使用哪个上下文(ApplicationContext或ActivityContext?)以及为什么.

看看例子(btw伟大的示例应用程序看到所有这一切结合)u2020由杰克·沃顿,只有毕加索的一个实例,它创建与应用程序上下文到位.这样的事情

@ProvIDes    @Singleton    Picasso provIDePicasso(@ApplicationContext Context context,OkhttpClIEnt clIEnt) {        Picasso picasso = new Picasso.Builder(context)                .downloader(new OkhttpDownloader(clIEnt))                .Listener(new Picasso.Listener() {                    @OverrIDe                    public voID onImageLoadFailed(Picasso picasso,Uri uri,Exception e) {                        Log.e("Picasso","Failed to load image:" + uri);                    }                })                .build();        return picasso;    }

这是用作全局对象,仅实例化一次.我的问题是为什么不在Activity级别实例化一个新的Picasso实例(使用相同的全局OkhttpClIEnt来配置LRUCache并且之前被注入),并将该活动作为上下文传递.我今天早上在Github Picasso线程中阅读应用程序上下文,但没有给出更多的细节.

所以作为结论,我的问题是:
– 我们应该使用哪些上下文以及哪一个.
– 为什么使用全局对象而不是活动级实例.

谢谢!

解决方法 使用默认的Picasso.with(上下文)方法或Builder,它将从给定的上下文中检索应用程序上下文:
/** Start building a new {@link Picasso} instance. */public Builder(Context context) {  if (context == null) {    throw new IllegalArgumentException("Context must not be null.");  }  this.context = context.getApplicationContext();}

Stub从Picasso.java#Builder复制.

如果你真的想在每个活动中创建一个新的实例:对于您创建的每个毕加索实例,您基本上都会创建一个新的缓存:在第一个实例中缓存的图像将不会在第二个实例中被重用.您很可能在这里遇到OutOfMemoryExceptions,因为毕加索不处理这个.

总结

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

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

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

原文地址: http://outofmemory.cn/web/1133852.html

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

发表评论

登录后才能评论

评论列表(0条)

保存