Androidapp配置⽂件使⽤分析
在安卓app开发中,常需要将⼀些数据放在配置⽂件,辅助程序开发和运⾏。依据数据复杂度、使⽤场景等条件,会存在不同种类的配置⽂件,⽐如最常见的xml⽂件,使⽤在l,res资源定义等。其实除了xml之外还有其他格式的⽂件可以⽤作配置⽂件,⽐如json、properties等。下⾯来详细看⼀下:
1.Properties⽂件
常⽤于保存软件配置信息,类似hashmap保存信息,key和value对应。
例如as⼯程下:
local.properties
ndk.dir=C\:\\Users\\Administrator\\AppData\\Local\\Android\\Sdk\\ndk-bundle
sdk.dir=C\:\\Users\\Administrator\\AppData\\Local\\Android\\Sdk
gradle.properties:
systemProp.http.u.edu
systemProp.http.proxyPort=80
2.XML⽂件
XML has been used to describe structured data and to serialize objects. Various XML-based protocols exist to
represent the same kind of data structures as JSON for the same kind of data interchange purposes.
安卓app使⽤xml配置⽂件的场景:
<1> SharedPreferences : key-value app运⾏过程动态⽣成的,保存⼀些配置信息
安卓资源⽂件
<2> res⽬录:⽐如l,编译后通过aapt打包⽣成resource.arsc⼆进制索引⽂件。⼆进制格式的XML⽂件有如下优点:
1. 占⽤空间⼩。这是由于所有XML元素的标签、属性名称、属性值和内容所涉及到的字符串都会被统⼀收集到⼀个字符串资源池中去,
并且会去重。有了这个字符串资源池,原来使⽤字符串的地⽅就会被替换成⼀个索引到字符串资源池的整数值,从⽽可以减少⽂件的⼤⼩。
2. 解析速度快。这是由于⼆进制格式的XML元素⾥⾯不再包含有字符串值,因此就避免了进⾏字符串解析,从⽽提⾼速度。
Android资源管理框架的另外⼀个重要任务就是要根据资源ID来快速到对应的资源。app代码编译之后,⽣成⼀个R.java,这个类记录了每⼀个资源的id。程序运⾏过程,可以使⽤id,到索引⽂件种快速查对应的资源。具体实现原理可以参考AOSP源码实现。
案例:
apk
配置⽂件种类占⽤空间
res资源⽂件夹占⽤空间22.9 MB
aapt编译打包优化后⽣成的resource.arsc的占⽤空间 6.18MB
<3&l⽤于定义app的组件、权限等配置信息
3.json(JavaScript Object Notation)
JSON is an open-standard file format that uses human-readable text to transmit data objects consisting of attribute–value pairs and array data types (or any other serializable value). It is a very common data format used for
asynchronous browser–server communication, including as a replacement for XML in some AJAX-style systems.
优点:易阅读,轻量级,属性-值格式存储
json引安卓在线解析json
擎
描述
gson Gson是由⾕歌公司研发的产品,⽬前是最全的Json解析⼯具。完全可以将复杂的类型的Json解析成Bean或者Bean到Json的转换org.json org.json是Java常⽤的Json解析⼯具,主要提供JSONObject和JSONArray类
fastjson Fastjson是⼀个Java语⾔编写的⾼性能的JSON处理器,由阿⾥巴巴公司开发。FastJson采⽤独创的算法,将parse的速度提升到极致,超过所有json库。但是在对⼀些复杂类型的Bean转换Json上会出现⼀些问题,需要特殊处理。
jackson Jackson是由其社区进⾏维护,简单易⽤并且性能也相对⾼些。但是对于复杂的bean转换Json,转换的格式鄙视标准的Json格式。
PS:Jackson为Spring MVC内置Json解析⼯具
json与xml⽐较
<1>xml功能更为强⼤,可以通过dtd schema实现较为复杂的数据类型定义。在安卓系统中⼤量使⽤了xml作为配置⽂件,
⽐如l,资源⽬录下l等。但是xml的缺点是解析速度相对较慢,占⽤空间相对较⼤。因此,安卓对资源⽂件在编译、打包过程进⾏了优化,⽣成了arsc⼆进制⽂件,占⽤空间
更⼩,解析过程避免字符串⽐较,效率更⾼。
<2>json相⽐xml具有易阅读,轻量级(没有结尾标⽰符等),加载效率⾼。如果考虑性能和占⽤空间⼤⼩,在json可以满⾜使⽤的情况之下,可以优先使⽤json。但是上⾯提到了安卓apk资源xml⽂件编译优化的事项,如果是配置信息可以通过资源⽂件保存,那么使⽤资源⽂件xml要⽐json配置⽂件解析效率要⾼,空间占⽤也更⼩。
总结:
在了解了各种配置⽂件的设计初衷和优势劣势之后,后续在app开发中可以更有针对性的选取适合的⽅案。上⽂只是
简单分析了配置⽂件的使⽤,此类⽂件可以延伸到存储⽅案这个⼤的话题,会在此基础之上涉及到内存、缓存等知识,
后⾯可以将此议题展开。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论