Android面试题(六)JSON、XML、MediaPlay生命周期

1. JSON中有几种数据类型,解析对应数据类型分别用哪个类?
三种类型:
第一种类型是标量(scalar),也就是一个单独的字符串(string)或数字(numbers),
比如"北京"这个单独的词。
第二种类型是序列(sequence),也就是若干个相关的数据按照一定顺序并列在一起,
又叫做数组(array)或列表(List),比如"北京,上海"。对应JSONAray;
第三种类型是映射(mapping),也就是一个名/值对(Name/value),即数据有一个名称,
还有一个与之相对应的值,这又称作散列(hash)或字典(dictionary)。对应String;
第四种,类似于Java中的类,对应JSONObject。


2. 有哪些方式可以做JSON数据的解析?
两种解析方式:
1)JSON普通解析方式,运用
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;对象来解析;
2)运用gson-2.1.jar包下的Gson类和与之Json数据相对应的Translate类来解析;


3. 有哪些方式可以做XML数据解析?
DOM在处理XML文件时,将XML文件解析成树状结构并放入内存中进行处理。


SAX则是以事件作为解析XML文件的模式,它将XML文件转化成一系列的事件,由不同的事件处理器来决定如何处理。
XML文件较大时,选择SAX技术是比较合理的。

XML pull解析并未像SAX解析那样监听元素的结束,而是在开始处完成了大部分处理。
这有利于提早读取XML文件,可以极大的减少解析时间,这种优化对于连接速度较漫的移动设备而言尤为重要。
对于XML文档较大但只需要文档的一部分时,XML Pull解析器则是更为有效的方法。


4. XML解析几种方式的各有什么样的特点?
当XML文件较小时,我们可以选DOM,因为它简单、直观。

SAX解析虽然代码量有些大,但是它不需要将所有的XML文件加载到内存中。
这样对于有限的Android内存更有效,而且Android提供了一种传统的SAX使用方法以及一个便捷的SAX包装器。
使用Android.util.Xml类,从示例中可以看出,会比使用 SAX来得简单。

XML pull解析并未像SAX解析那样监听元素的结束,而是在开始处完成了大部分处理。
这有利于提早读取XML文件,可以极大的减少解析时间,这种优化对于连接速度较漫的移动设备而言尤为重要。



5. 请阐述一种XML解析方式的基本流程。
XML pull提供了开始元素和结束元素。当某个元素开始时,可以调用parser.nextText从XML文档中提取所有字符数据。
当解析到一个文档结束时,自动生成EndDocument事件。

6. 自定义View有哪几种方式?
自绘控件、组合控件、以及继承控件。

7. MediaPlayer的生命周期是怎样的?
1.Idle 状态, 2.End 状态,3.Initialized 状态,4.Pre

pared 状态
5.Preparing 状态,6.Started 状态,7.Paused 状态,8.Stop 状态
9.PlaybackCompleted状态,10.Error状态
8. 请阐述图片加载的基本流程及优化方案。
通过HttpURLConnection conn = (HttpURLConnection) url.openConnection()
取得图片链接,通过InputStream in = conn.getInputStream()取得图片图片io流
取得Bitmap图片。
通过LuraCache来优化图片缓存


相关文档
最新文档