防止多图OOM的核心解决思路就是使用LruCache技术。但LruCache只是管理了内存中图片的存储与释放,如果图片从内存中被移除的话,那么又需要从网络上重新加载一次图片,这显然非常耗时。对此,Google又提供了一套硬盘缓存的解决方案:DiskLruCache(非Google官方编写,但获得官方...
分类:
其他好文 时间:
2014-08-09 00:00:06
阅读次数:
369
内容和图片在从网络上获取到之后都会存入到本地缓存中,因此即使手机在没有网络的情况下依然能够加载出以前浏览过的新闻。而使用的缓存技术不用多说,自然是DiskLruCache了,那么首先第一个问题,这些数据都被缓存在了手机的什么位置呢?其实DiskLruCache并没有限制数据的缓存位置,可以自由地进行...
分类:
其他好文 时间:
2014-08-08 23:59:56
阅读次数:
578
记得在很早之前,我有写过一篇文章Android高效加载大图、多图解决方案,有效避免程序OOM,这篇文章是翻译自Android Doc的,其中防止多图OOM的核心解决思路就是使用LruCache技术。但LruCache只是管理了内存中图片的存储与释放,如果图片从内存中被移除的话,那么又需要从网络上重新加载一次图片,这显然非常耗时。对此,Google又提供了一套硬盘缓存的解决方案,DiskLruCache(非Google官方编写,但获得官方认证)。只可惜,Android Doc中并没有对DiskLruCache...
分类:
移动开发 时间:
2014-08-07 09:47:49
阅读次数:
260
java中的本地缓存,工作后陆续用到,一直想写,一直无从下手,最近又涉及到这方面的问题了,梳理了一下。自己构造单例、guava、ehcache基本上涵盖了目前的大多数行为了。 为什么要有本地缓存?在 系统中,有些数据...
分类:
编程语言 时间:
2014-08-05 11:40:39
阅读次数:
311
我们都知道,计算机读取数据时:内存的读取速度是最快的,然后是文件的读取速度,最后是网络资源的读取。
如果每次加载同一张图片都要从网络获取,那代价实在太大了。所以同一张图片只要从网络获取一次就够了,然后在本地缓存起来,之后加载同一张图片时就 从缓存中加载就可以了。从内存缓存读取图片是最快的,但是因为Android对每个应用所能使用的内存容量都有限制,所以最好再加上文件缓存。文件缓存空间也不...
分类:
移动开发 时间:
2014-07-26 02:09:06
阅读次数:
246
这里判断缓存文件是否存在使用的是url.GetHashCode()方法,因为我们的图片文件名采用的是原URL的哈希码直接作为文件名来保存,重名概率可以忽略不计,也缩短了文件名的长度提高效率,这个做法借鉴于 iOS开源框架EGOImageView。
如果是第一次加载图片,这个URL对应的文件不存在,那么我们就去原URL下载图片然后赋值给控件
如果缓存文件夹中已有该文件,直接读取加载
由于前文的铺垫,我们的工具类已经是MonoBehaviour的单例子类,所以可以使用unity的异步函数StartCorutin...
分类:
其他好文 时间:
2014-07-23 17:17:21
阅读次数:
370
我们在移动端的开发中,异步网络图片加载用的非常的多,在unity当中虽然有AssetBundle的存在,一般是先加载好游戏资源然后再进入场景,但是还有不少地方能够用到异步网络图片的加载以及其缓存机制。
我之前也写过两个版本的ios中的异步网络图片加载helper类,所以今天按照同样的思路,也想做一个好用的helper类给大家使用以及简单的说下实现原理。
首先我们加载一张网络图片,要做的事情分步来讲为:
0.开始之前设置一张固定的图片作为占位图(placeholder),表示我们的图片还没加载好,来填充当前图...
分类:
其他好文 时间:
2014-07-23 00:06:17
阅读次数:
338
前天在编译软件时,需要 libtool 包,运行 sudo yum install libtool 总是提示HTTP 404 page?not found,开始以为是网络出问题了,因为最近几个月网络抽风似乎是正常现象 。 后来查了一下资料,才知道是本地缓存...
分类:
其他好文 时间:
2014-07-22 09:06:07
阅读次数:
198
#本地缓存目录空间不足在切图的时候,为了提高切图的性能,通常会配置集群,采用多台gis服务器同时执行一个切图任务。这样就有一个问题需要解决,那就是如果这么多gis服务器将自己切好的图,立即同时写入到arcgiscache的目录下。则会导致切图的性能的下降。因此arcgis server提供了这样的机...
分类:
其他好文 时间:
2014-07-19 16:24:59
阅读次数:
256
在平时开发中,我们经常采用HashMap来作为本地缓存的一种实现方式,将一些如系统变量等数据量比较少的参数保存在HashMap中,并将其作 为单例类的一个属性。在系统运行中,使用到这些缓存数据,都可以直接从该单例中获取该属性集合。但是,最近发现,HashMap并不是线程安全的,如果你 的单例类没有做...
分类:
编程语言 时间:
2014-07-18 19:08:17
阅读次数:
472