当前位置: 首页 > news >正文

根据网站做app网络营销图片素材

根据网站做app,网络营销图片素材,怎么做微信上的网站,php企业网站模板http://mrfu.me/2016/02/28/Glide_Module_Example_Customize_Caching/ 自定义内存缓存 希望你已经读了 caching basics 和 Glide modules 博客。否则,看下面的代码对你来说可能像魔术一般了。如果你读过了,那就继续读下去。 好吧,既然是定…

http://mrfu.me/2016/02/28/Glide_Module_Example_Customize_Caching/

自定义内存缓存

希望你已经读了 caching basics 和 Glide modules 博客。否则,看下面的代码对你来说可能像魔术一般了。如果你读过了,那就继续读下去。

好吧,既然是定制 Glide,我们就需要创建一个新的 Glide module。就如你在以前博客中看到的那样,applyOptions 方法使我们获取了 GlideBuilder 对象。该 GlideBuilder 为我们提供了几个方法去定制 Glide 的缓存。首先,来看看内存缓存。

内存缓存是在设备的 RAM 中去维护图片的。这里没有 IO 行为,所以这个操作是很快的。另一方面是 RAM(内存) 的大小是非常有限的。寻找一个大内存缓存的平衡点(大量图像空间)与一个小内存缓存(最大限度减少我们 App 的资源消耗)并不容易。Glide 内部使用了 MemorySizeCalculator 类去决定内存缓存大小以及 bitmap 的缓存池。bitmap 池维护了你 App 的堆中的图像分配。正确的 bitmpa 池是非常必要的,因为它避免很多的图像重复回收,这样可以确保垃圾回收器的管理更加合理。

幸运的是,你已经得到了 Glide 的 MemorySizeCalculator 类以及默认的计算:

MemorySizeCalculator calculator = new MemorySizeCalculator(context);  
int defaultMemoryCacheSize = calculator.getMemoryCacheSize();  
int defaultBitmapPoolSize = calculator.getBitmapPoolSize();  

上面这段代码相当有用,如果我们想要用默认值作为基准,然后调整它。比如,如果你认为你的 app 需要 120% 缓存作为 Glide 的默认值,用我们上面的变量去计算他们:

int customMemoryCacheSize = (int) (1.2 * defaultMemoryCacheSize);  
int customBitmapPoolSize = (int) (1.2 * defaultBitmapPoolSize);  

因为我们已经计算出了我们的内存缓存和 bitmap 池的大小,我们可以在我们的 Glide module 代码里去得到。在 applyOptions() 方法中,我们可以在 GlideBuilder 对象中调用相应的方法。

public class CustomCachingGlideModule implements GlideModule {  @Override public void applyOptions(Context context, GlideBuilder builder) {MemorySizeCalculator calculator = new MemorySizeCalculator(context);int defaultMemoryCacheSize = calculator.getMemoryCacheSize();int defaultBitmapPoolSize = calculator.getBitmapPoolSize();int customMemoryCacheSize = (int) (1.2 * defaultMemoryCacheSize);int customBitmapPoolSize = (int) (1.2 * defaultBitmapPoolSize);builder.setMemoryCache( new LruResourceCache( customMemoryCacheSize );builder.setBitmapPool( new LruBitmapPool( customBitmapPoolSize );}@Override public void registerComponents(Context context, Glide glide) {// nothing to do here}
}

正如你看到的,在 applyOptions() 方法的最后两行,我们不能直接设置大小。我们需要创建一个 LruResourceCacheLruBitmapPool 的实例。这两个都是 Glide 的默认实现。因此,如果你仅仅想要调整大小,就可以继续使用它们通过传两个不同的大小的值给构造函数。

自定义磁盘缓存

调整磁盘缓存和和刚才的很像,但是我们有一个更大的决定去做,磁盘缓存可以位于应用的私有目录(换句话说,除了它自己,没有别的应用可以访问)。否则,磁盘缓存也可以位于外部存储,公有目录(更多信息,请看 Storage Options)。不能一起设置这两个为之。Glide 为这两个选项都提供了它的实现:InternalCacheDiskCacheFactory 和 ExternalCacheDiskCacheFactory。就像内存缓存的构造函数一样,在它们的构造函数内都传一个磁盘缓存的工厂类:

public class CustomCachingGlideModule implements GlideModule {  @Overridepublic void applyOptions(Context context, GlideBuilder builder) {// set size & external vs. internalint cacheSize100MegaBytes = 104857600;builder.setDiskCache(new InternalCacheDiskCacheFactory(context, cacheSize100MegaBytes));//builder.setDiskCache(//new ExternalCacheDiskCacheFactory(context, cacheSize100MegaBytes));}@Overridepublic void registerComponents(Context context, Glide glide) {// nothing to do here}
}

上面的代码将设置磁盘缓存到应用的内部目录,并且设置了最大的大小为 100M。下面注释的那行代码会设置磁盘缓存到外部存储(也设置了最大大小为 100M)。

这两个选项都不让你选一个特点的目录。如果你要让磁盘缓存到指定的目录,你要使用 DiskLruCacheFactory

// or any other path
String downloadDirectoryPath = Environment.getDownloadCacheDirectory().getPath(); builder.setDiskCache(  new DiskLruCacheFactory( downloadDirectoryPath, cacheSize100MegaBytes )
);// In case you want to specify a cache sub folder (i.e. "glidecache"):
//builder.setDiskCache(
//    new DiskLruCacheFactory( downloadDirectoryPath, "glidecache", cacheSize100MegaBytes ) 
//);

自定义缓存实现

目前为止,我们已经向你展示了如何去移动和设置缓存为确定的大小。然而,所有的调用都引用了缓存的原始实现。如果你有你自己的缓存实现呢?

嗯,你看到我们总是创建一个 Glide 的默认缓存的实现的新实例。你可以完成你自己的实现,创建和实例化它,并用上上面所有你看到的方法。你必须确保你的缓存代码实现了如下接口方法:

Memory cache needs to implement: MemoryCache
Bitmap pool needs to implement: BitmapPool
Disk cache needs to implement: DiskCache

Outlook

在这篇博客中,你已经看到了如何改变和定制 Glide 的缓存,Glide 的默认实现已经是全面的了,所以确保你有足够的理由而去改变这些事情。如果你做了一些改变,确保设备的覆盖测试。

下周,我们会看到另一个 Glide module 话题。我们会看到如何去实现一个组件,它要求图片在目标 ImageView 有精确的大小。我们保证,这很棒!

关注我的公众号,轻松了解和学习更多技术
这里写图片描述

http://www.lbrq.cn/news/2432917.html

相关文章:

  • 微商自己做网站海外域名
  • 有哪些可以做外链的网站百度入口官网
  • 天河区门户网站教育专栏微信腾讯会议
  • 做网站的 视频国内建站平台
  • 政府网站建设构想提升神马seo关键词自然排名
  • 做竞猜网站犯法吗无锡seo公司找哪家好
  • 网站霸词怎么做关键词优化和seo
  • 有哪些做留学资讯的网站乔拓云网站注册
  • 党建网站建设技术方案搜索引擎优化工作
  • zblog 仿wordpressseo基础
  • 青海互动网站建设百度首页纯净版
  • 专业网架加工广西seo搜索引擎优化
  • 阿里云 wordpress建站推广软件的app
  • 做网站设计注意什么细节开通网站需要多少钱
  • 创建小型网站的步骤网页广告调词平台
  • 网页设计教程文字与图片广州网站设计专注乐云seo
  • 嘉兴网站制作案例百度快速优化推广
  • 网站 建设 内容 安排免费留电话的广告
  • 网优 是什么网站五年级上册语文优化设计答案
  • 焦作会计做继续教育在哪个网站建网站有哪些步骤
  • 企业网站报价方案模板下载搜索推广渠道有哪些
  • 学网站开发培训机构全网关键词搜索工具
  • 四川城乡建设委员会官方网站关键词首页排名优化
  • 淄博网站建设费用郑州seo招聘
  • 购物网站运营人力资源培训
  • 商城网站设计费用网络营销案例有哪些
  • 仿牌网站安全电商培训课程
  • 自适应网站做百度推广找客户资源的软件免费的
  • 玩具网站建设策划书最好的bt磁力搜索引擎
  • wordpress short ping杭州市优化服务
  • Vue开发常用
  • 泛型:C#中的类型抽象艺术
  • 使用Langchain调用模型上下文协议 (MCP)服务
  • QGIS、ArcMap、ArcGIS Pro中的书签功能、场景裁剪
  • Node.js worker_threads 性能提升
  • Numpy库,矩阵形状与维度操作