eoe推荐的优秀博客
<a href="http://my.eoe.cn/huodong/archive/5430.html">http://my.eoe.cn/huodong/archive/5430.html</a>
<strong>Android中assets目录和res/raw目录的异同和使用场景</strong>
<strong>链接</strong>: <a href="http://my.eoe.cn/futurexiong/archive/5350.html" rel="nofollow" target="_blank">http://my.eoe.cn/futurexiong/archive/5350.html</a>
<strong>点评</strong>:在Android工程目录中都有assets、res/raw目录,作为开发者,你是否都用过这两个目录呢?你是否了解这两个目录的作用以及使用场景呢?上面这篇文章就详细介绍了这两个目录的作用以及使用场景,相信你看完这篇文章之后就明白这两个目录是干啥的了,也知道如何去使用了,那是不是赶紧来学习下呢?(@myclover)
<div>
<div>
好久没写些什么了,一直比较忙,有近2个月没更新博客了。
今天看到有人问Android中assets目录和raw目录的区别和使用情况。
能提出这个问题的,应该都了解它们的共同点:
<strong>它们会被原封不动的拷贝到APK中,而不会像其它资源文件那样被编译成二进制的形式。</strong>
要说区别,当然最直观的就是获取它们的InputStream的API不一样了。
<strong>assets</strong>:<code>InputStream assets = getAssets().open("xxxx");</code>
<strong>raw</strong>:<code>InputStream raw = getResources().openRawResource(R.raw.xxxx)</code>
有人可能会有疑问,既然它们都是被原封不动的拷贝到APK中,而assets可以创建目录结构,又能够动态的列出assets中的所有资源<code>getAssets().list(String path);</code>,这些raw都做不到,那raw还有什么用呢?
下面我们来说说它们主要的区别:
<ul>
<li>由于raw是Resources (res)的子目录,Android会自动的为这目录中的所有资源文件生成一个ID,这个ID会被存储在R类当中,作为一个文件的引用。这意味着这个资源文件可以很容易的被Android的类和方法访问到,甚至在Android XML文件中你也可以<code>@raw/</code>的形式引用到它。在Android中,使用ID是访问一个文件最快捷的方式。MP3和Ogg文件放在这个目录下是比较合适的。</li>
<li>assets目录更像一个附录类型的目录,Android不会为这个目录中的文件生成ID并保存在R类当中,因此它与Android中的一些类和方法兼容度更低。同时,由于你需要一个字符串路径来获取这个目录下的文件描述符,访问的速度会更慢。但是把一些文件放在这个目录下会使一些操作更加方便,比方说拷贝一个数据库文件到系统内存中。要注意的是,你无法在Android XML文件中引用到assets目录下的文件,只能通过AssetManager来访问这些文件。数据库文件和游戏数据等放在这个目录下是比较合适的。</li>
</ul>
另外,网上关于assets和raw的资料都千篇一律了,因此关于这两者中单个文件大小不能超过1M的**错误**描述也在传播,即如果读取超过1M的文件会报"Data exceeds UNCOMPRESS_DATA_MAX (1314625 vs 1048576)"的IOException,还引申出种种解决方案。个人认为不应该有这样的限制,为了验证这个说法写了个Demo,发现将近5M的压缩包在assets和raw中都能正常访问,因此在这里纠正一下,理论上只要打包不超过Android APK 50M大小的限制都是没有问题的。当然了,不排除是Android很早期的时候因为设备硬件原因aapt在编译的时候对这两个文件夹大小做出了限制,如果是这样,较新版的ADT应该不会出现这种情况。
更新:为了验证我最后一段的描述,避免导致结果误导,晚上写了几个小Demo验证之后又花了点时间查阅了一些资料,最后找到这篇文章<a href="http://ponystyle.com/blog/2010/03/26/dealing-with-asset-compression-in-android-apps/" rel="nofollow" target="_blank">http://ponystyle.com/blog/2010/03/26/dealing-with-asset-compression-in-android-apps/</a> ,文章比较简单清晰,我就不翻译了。这篇文章应该还蛮有说服力的,从根本上说明了当时Android2.3以前产生资源文件单个文件大小不能超过1M的原因和部分解决方法。不过由于限制是当时的aapt决定的,现在已经更新了多个版本的aapt已经不存在这种问题了,也印证了我最后一段的猜想。
</div>
</div>
<div>
声明:eoe文章著作权属于作者,受法律保护,转载时请务必以超链接形式附带如下信息
原文作者: <a title="futurexiong" href="http://my.eoe.cn/futurexiong" target="_blank">futurexiong</a>
原文地址: <a title="原文地址" href="http://my.eoe.cn/futurexiong/archive/5350.html" target="_blank">http://my.eoe.cn/futurexiong/archive/5350.html</a>
</div>
eoe推荐的优秀博客的更多相关文章
- iOS开发优秀博客和软件推荐
iOSBlogAndTools iOS开发优秀博客和软件推荐 本博客和工具列表由广大iOS开发者收集和推荐,如果大家有好的博客或者工具想要分享请点击:我要提交. 收到大家的提交后会及时收录与更新.Gi ...
- 转载请注明:Windows 系统必备好用软件&工具合集跟推荐 | 老D博客
Windows 系统必备好用软件&工具合集跟推荐 97 63,371 A+ 所属分类:工具软件 一.浏览器 二.下载软件 三.播放软件 五.电子邮件客户端 六.图片/照片 浏览查看工具 七.文 ...
- iOS FFmpeg 优秀博客(资源)集锦
iOS FFmpeg 优秀博客(资源)集锦 这篇博客没有我自己写的内容: 主要是对FFmpeg一些优秀博客的记录 随时更新 1>iOS编译FFmpeg,kxmovie实现视频播放 2>视音 ...
- 前端设计师也有必要学习seo,推荐一个seo博客
做前端设计师有一段时间了,现在越来越觉得作为一个前端设计师,必须要懂一些seo的知识. 因为公司的seo们,总是在网站做好以后,提出各种各样的网站修改的需求. 如果前端设计师,能够了解一些基本的seo ...
- 巨高兴,偶的文章 “如何在服务器上配置ODBC来访问本机DB2for Windows服务器”被推荐至CSDN博客首页
非常高兴,偶的文章 "如何在服务器上配置ODBC来访问本机DB2for Windows服务器"被推荐至CSDN博客首页,截图留念. 文章被推荐在C ...
- 【转】【e周美文】优秀博客上榜推荐
Everybody,本周的博客推荐开始啦,记住,有好的博客可要给小活推荐一下哦. 7.19日 博客推荐 Android权限列表作者:@大漠落日 链接:http://my.eoe.cn/1103623/ ...
- 推荐一个静态博客兼笔记的工具:WDTP
简介 WDTP(山湖录)不止是一款开源免费的GUI桌面单机版静态网站生成器和简单方便的前端开发工具,更是一款跨平台的集笔记.录音.个人知识管理.写作/创作.博客/网站内容与样式管理等功能于一体的多合一 ...
- CSDN优秀博客连接,博客之星连接。
点击链接 获得[红杏出墙]插件,FQ上网无压力!谷歌搜索无压力! 2013年度CSDN十大博客之星 TOP 作者 专注领域 博客地址 邹晓艺 机器学习及算法 zouxy09 2 王然 潜在的集大成者 ...
- iOS优秀博客收录
原文链接:http://ju.outofmemory.cn/entry/105297 唐巧 王巍 破船之家 NSHipster Limboy 无网不剩 念茜的博客 Xcode Dev Ted's Ho ...
随机推荐
- ↗☻【编写可维护的JavaScript #BOOK#】第4章 变量、函数和运算符
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8& ...
- memcached单点故障与负载均衡
在上文中,主要教大家如何搭建在windows IIS 7.5下搭建php环境,使用常见的两种memcached性能监视工具.通过自己动手实践,观察监控工具上数据,相信大家对于memcached的了解 ...
- List<HashMap>和HashMap
例如select查询出的是学号.姓名,比如查出符合条件的是学号是0810的小红,学号是0811的小明,组织起来如下: list.add(hashmap1);list.add(hashmap2); ...
- POJ 1258 Agri-Net
题意:给一个无向图的邻接矩阵,求最小生成树. 解法:Kruskal算法.把边按边权排序,从小到大插入生成树中,如果一个边的两个点都在生成树中则不插入,用并查集维护. 代码: #include<s ...
- Zabbix探索:Proxy没有回传任何数据
因为Zabbix使用Puppet搭建的,实际上是通过脚本安装的,为了偷懒,将脚本都写一块去了,后来发现Proxy的配置和Zabbix的配置不同,又偷懒一次,复制了一下,但是为了调整脚本使用的便捷性,将 ...
- 设计模式_Mediator_调停者模式
形象例子: 四个MM打麻将,相互之间谁应该给谁多少钱算不清楚了,幸亏当时我在旁边,按照各自的筹码数算钱,赚了钱的从我这里拿,赔了钱的也付给我,一切就OK啦,俺得到了四个MM的电话.调停者模式: 调停者 ...
- 0R电阻作用
0欧电阻的作用(网上收集整理的) 0欧的电阻大概有以下几个功能: ①做为跳线使用.这样既美观,安装也方便. ②在数字和模拟等混合电路中,往往要求两个地分开,并且单点连接.我们可以用一个0欧的电阻来 ...
- HDU 3289 Cat VS Dog (二分匹配 求 最大独立集)
题意:每个人有喜欢的猫和不喜欢的狗.留下他喜欢的猫他就高心,否则不高心.问最后最多有几个人高心. 思路:二分图求最大匹配 #include<cstdio> #include<cstr ...
- 恒天云技术分享系列6 – vLan网络原理解析
转载自恒天云官网:http://www.hengtianyun.com/download-show-id-15.html Vlan网络模式优点 增加网络可扩展性 网络隔离,每个租户拥有独立的网络及vl ...
- 系统时间不一致导致memcached的session不共享
测试服务器需要做负载均衡,采用的是Nginx+Tomcat. 负载均衡配置成功之后,采用memcached配置session同步.总共4台服务器,三台服务器很顺利的配置成功,最后一台服务器死活不能共享 ...