移动应用开发难免要有缓存文件,可总有程序员不够自律,少敲几个字符,把文件夹建在SD卡的根目录。看看手机的SD卡目录,自己还认识几个文件夹——大部分都被应用程序建立的文件夹弄的乱七八糟了吧,找到自己的需要的文件夹跟翻江倒海似的。
或许这不算什么大事儿,可是缓存的一些图片会被系统监听到,然后就出现在你的图库里面了。这下该热闹了——图库里自己拍下的美景美人美食总之各种美的没天理的图片被更多的缓存图片包围了,表情,头像,网络图片,可恨的是这些图片分辨率总是超超超低,和自己的照片摆在一起,我勒个去!更可恨的是,这些图片的名字......那是相当长,长的你都没有勇气看,看了也没有意义,都是数字和字母的混合名。
然后有一天,强迫症的我终于下了决心要删除这些应用了,可那些残留的缓存依然挺立在我的SD卡啊。看一下SD卡目录吧。adb shell , cd /sdcard , ls -n 。尼玛!这么多文件夹,哪个才是XXX软件的缓存,删哪个好呢?
你受得了吗?
谷歌的API从level 8 开始,也就是2.2版本,有一个在SD卡上建立缓存的专用API,Context.getExternalCacheDir(),这样建立的缓存文件,在你的应用被卸载的时候,随之建立的缓存文件也会相应的删除。而且系统不会将此缓存的文件当作图片,音频等多媒体文件。详情链接如下:
好吧,或许应用程序不得不兼容2.1版本的系统,那可不可以,约定俗成一下,开发者的应用缓存文件夹都建立在/sdcard/data目录下面好么,然后里面再放一个名叫.nomedia的文件夹好么。不过多敲几下键盘就做到了对吗?
这不是谷歌的问题,是程序员的问题。
应用程序不会自己追求完美,这,应该是程序员的追求。