Android图形缓存库Picasso内存优化

2019-03-20 10:46|来源: 网路

picasso是Square公司开源的一个Android图形缓存库,地址http://square.github.io/picasso/,可以实现图片下载和缓存功能。

picasso使用简单,如下

Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);
主要有以下一些特性:
   在adapter中回收和取消当前的下载;
   使用最少的内存完成复杂的图形转换操作;
   自动的内存和硬盘缓存;
   图形转换操作,如变换大小,旋转等,提供了接口来让用户可以自定义转换操作;
   加载载网络或本地资源;



刚使用Picasso时,发现有点卡卡的,查看了一下Memory,直接疯长到了几十兆,看了一下官网

Transform images to better fit into layouts and to reduce memory size.意思大概就是可以通过设置图片的大小来适应布局与减少内存.

OK,那么问题解决了。

Picasso.with(context)
  .load(url)
  .resize(50, 50)//节约内存
  .centerCrop()
  .into(imageView)

相关问答

更多
  • 毕加索在毕加索建筑商中通过skipMemoryCache()支持这一点。 一个例子如下所示。 Picasso.with(context).load(imageUrl) .error(R.drawable.error) .placeholder(R.drawable.placeholder) .skipMemoryCache() .into(imageView); 使用新的API, ...
  • 不按顺序回答您的问题: 1.外部build.gradle在其中有一条评论,内容如下: //顶级构建文件,您可以在其中添加所有子项目/模块共有的配置选项。 内部build.gradle文件是每个模块; 它位于内部模块中,您可以在其中完成大部分工作,从而增加依赖性并进行设置。 大多数时候你不修改外面的一个。 不幸的是,它令人困惑,容易犯错,而当你这样做时,你会得到非常奇怪的错误信息。 这是一项正在进行的工作。 2.使用最近创建的项目,如果它有它的build.gradle文件: dependencies { ...
  • Glide和Picasso都不是完美的。 Glide将图像加载到内存并执行缓存的方式比使图像加载速度更快的Picasso更好。 此外,它还有助于防止流行OutOfMemoryError的应用程序。 GIF动画加载是Glide提供的一种杀死功能。 无论如何,毕加索解码图像质量比滑翔更好。 https://inthecheesefactory.com/blog/get-to-know-glide-recommended-by-google/en Neither Glide nor Picasso is perf ...
  • 毕加索自动缓存图像。 您可以通过调用来检查Picasso从哪里加载图像 setIndicatorsEnabled(true) 在Builder上。 Picasso automatically caches images. You can check where Picasso loaded an image from by calling setIndicatorsEnabled(true) on the Builder.
  • 我也试图在开始时使用Picasso,并发现他们的缓存系统很糟糕。 它会缓存我下载的一些图像,但不会缓存其他图像,因此会留下很多带占位符的图像。 我建议你试试Universal-Image-Loader( https://github.com/nostra13/Android-Universal-Image-Loader )。 我目前正在使用它来缓存我的应用程序中的所有图像,并且它可以完美地工作(大约200个图像atm)。 Finally got the problem - API is returning ...
  • 毕加索自动缓存加载的图像,以便下次他们从缓存中加载。 您可以通过启用指示器来检查是否从Web,缓存或磁盘加载了映像 setIndicatorsEnabled(true) 每个图像都会显示指标,指定从哪里加载图像。 我从这里得到了参考 Picasso automatically caches the loaded images, So that next time they will be loaded from the cache. You can check whether the image is l ...
  • 尝试使用Glide 。 它应该比毕加索更快,更节省内存。 代码也类似于Picasso,因此您不需要对代码进行太多更改。 示例代码: Glide.with(mContext) .load(mCameraImages.getUris().get(position)) .error(android.R.drawable.ic_dialog_alert) .centerCrop() .into(view); 查看Glide vs Picasso的文章,了解两者之间的详细差异。 还可 ...
  • 原始图像将存储在磁盘缓存中。 确保您的服务器正在发送正确的标头,以便在您需要的任何时间段内进行缓存。 当第二个请求发出并且映像已经在磁盘缓存中时,它将立即返回。 默认情况下,磁盘缓存仅适用于Android 4.0及更高版本,因为它是在引入内置HTTP客户端时。 对于所有API级别的缓存,请在您的应用中包含[OkHttp] [1]。 毕加索会自动看到OkHttp并使用它。 这不仅可以为您提供任何地方的缓存,还可以提供全面的更好的HTTP客户端。 Original images will be stored i ...
  • 你在调用GC和内存是否达到最小值? 这表示没有对使用过的位图的强引用。 一切都好 。 由于将大图像解码为位图,因此会占用大量内存。 位图格式非常重。 这与此无关。 我建议您降低生成图像的分辨率。 You are calling GC and memory falls into minimum value? This says that there is no strong references to used bitmaps. Everything is OK. Large memory usage hap ...