ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

android-毕加索可以替我排队吗?

2019-10-10 11:28:08  阅读:263  来源: 互联网

标签:image-loading android image picasso android-image


关于毕加索的行为,这是一个我所不知道的关键点.

假设您正在展示十个项目的幻灯片.说,他们在屏幕上每个十秒钟.

理想的行为是这样的:在幻灯片放映开始时,我只需执行以下操作:

picasso.get( url1 )
picasso.get( url2 )
picasso.get( url3 )
picasso.get( url4 )
picasso.get( url5 )
picasso.get( url6 )
picasso.get( url7 )
picasso.get( url8 )
picasso.get( url9 )
picasso.get( url10 )

而且,事实上,毕加索会一次排在队列中.

如果我告诉毕加索一次预热10个网址,这是怎么回事?

毕加索是否可以一次只做一件事情,是否有这样的选择?

(随之而来的其他问题是,您可以取消队列,还是…?)

壁画

感谢这个页面上的一个惊人答案@alicanozkara我是第一次学习

https://github.com/facebook/fresco

(1.3万颗星)无论好坏,我认为毕加索时代可能已经过去.

解决方法:

我认为仅使用毕加索,您可以实现:

1)使用fetch()异步将所有图像加载到缓存中,如下所示:

Picasso.with(context).load(URL).fetch();

您还可以为要尽早加载的图像添加优先级:(也许为幻灯片的前几张图像设置高优先级)

Picasso.with(context)
.load(URL)
.priority(Picasso.Priority.HIGH) // Default priority is medium
.fetch();

2)关于取消队列,您可以在图像中添加一个公共tag(),并且可以随时暂停/取消/恢复!

private static final Object TAG_OBJECT = Object();

Picasso.with(context)
.load(URL)
.tag(TAG_OBJECT) 
// can be any Java object, must be the same object for all requests you want to control together.

然后我们可以像这样控制标签:

Picasso.with(context)
.pauseTag(TAG_OBJECT)
//.resumeTag(TAG_OBJECT)
//.cancelTag(TAG_OBJECT)

3)我想建议的另一件重要事情是,当您预加载图像时,仅将它们保存到磁盘缓存中,而仅在显示时才将它们加载到内存缓存中.这将防止从内存缓存中刷新其他重要图像:

Picasso  
.with(context)
.load(URL)
.memoryPolicy(MemoryPolicy.NO_STORE) //Skips storing the final result into memory cache.
.fetch()

4)要按顺序将图像加载到队列中,可以使用Picasso.Builder中的executor(ExecutorService)方法传递自己的ExecutorService(在您的情况下为SingleThreadExecutor).

您甚至可以通过在Picasso.Builder类中找到的downloader(Downloader)方法和memorycache(Cache)方法来更改磁盘缓存的大小.

其他很棒的图书馆:

Glide

Fresco

标签:image-loading,android,image,picasso,android-image
来源: https://codeday.me/bug/20191010/1886729.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有