Fork me on GitHub
摘要: 本文使用SAX来解析XML,在Android里面可以使用SAX和DOM,DOM需要把整个XML文件读入内存再解析,比较消耗内存,而SAX基于事件驱动的处理方式,可以在各节点触发回调函数,不过SAX适合节点结构简单的XML文档,复杂的XML文档在后期的节点深度处理会有点麻烦。本文要解析的test.xml文件如下:view plaincopy to clipboardprint?<?xmlversion="1.0"encoding="utf-8"?><test><title>testSAX</title>< 阅读全文
posted @ 2011-02-27 23:28 Greenwood 阅读(457) 评论(0) 推荐(0) 编辑
摘要: SAX是一种占用内存少且解析速度快的解析器,它采用的是事件启动,它不需要解析完整个文档,而是按照内容顺序 看文档某个部分是否符合xml语法,如果符合就触发相应的事件,所谓的事件就是些回调方法(callback),这些方法 定义在ContentHandler中,下面是其主要方法:startDocument:当遇到文档的时候就触发这个事件 调用这个方法 可以在其中做些预处理工作。startElement: (String namespaceURI,String localName,String qName,Attributes atts)当遇开始标签的时候就会触发这个方法。 endElement( 阅读全文
posted @ 2011-02-27 23:16 Greenwood 阅读(258) 评论(0) 推荐(0) 编辑
摘要: DOM解析XML文件时,会将XML文件的所有内容以文档树方式存放在内存中,然后允许您使用DOM API遍历XML树、检索所需的数据。使用DOM操作XML的代码看起来是比较直观的,并且在某些方面比基于SAX的实现更加简单。但是,因为DOM需要将XML文件的所有内容以文档树方式存放在内存中,所以内存的消耗比较大,特别对于运行Android的移动设备来说,因为设备的资源比较宝贵,所以建议还是采用SAX来解析XML文件,当然,如果XML文件的内容比较小采用DOM也是可行的。 public class DOMXmlReader { public static List<Person> XML 阅读全文
posted @ 2011-02-27 23:08 Greenwood 阅读(248) 评论(0) 推荐(0) 编辑
摘要: 除了可以使用 SAX和DOM解析XML文件,大家也可以使用Android内置的Pull解析器解析XML文件。 Pull解析器的运行方式与 SAX 解析器相似。它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件。事件将作为数值代码被发送,因此可以使用一个switch对感兴趣的事件进行处理。当元素开始解析时,调用parser.nextText()方法可以获取下一个Text类型节点的值。public class PullService { public static List<Person> readXML(InputStrea 阅读全文
posted @ 2011-02-27 22:37 Greenwood 阅读(345) 评论(0) 推荐(0) 编辑
摘要: Toast用于向用户显示一些帮助/提示。下面我做了5中效果,来说明Toast的强大,定义一个属于你自己的Toast。1.默认效果代码Toast.makeText(getApplicationContext(), "默认Toast样式",Toast.LENGTH_SHORT).show();2.自定义显示位置效果代码toast = Toast.makeText(getApplicationContext(),"自定义位置Toast", Toast.LENGTH_LONG);toast.setGravity(Gravity.CENTER, 0, 0);toa 阅读全文
posted @ 2011-02-27 21:14 Greenwood 阅读(680) 评论(1) 推荐(0) 编辑
摘要: 本人在项目开发过程,需要实现一个“来电归属地”的功能,因此用到了Toast。但Toast的显示时间,不受我们控制,系统只提供了两个配置参数,分别是LENGTH_LONG,LENGTH_SHORT。因为要让Toast长期显示,需要另外一个线程,每隔一个时间段,就循环显示一次。 先说明一下,本次需要用到Handle机制,因此不了解或者不熟悉Handle的同学,请先去看看Android上的Handle机制! 下面开始讲解代码实现详情! 先写一个包装类,就叫MyToast吧,如下 public class MyToast { private Context mContext = null; priva 阅读全文
posted @ 2011-02-27 21:12 Greenwood 阅读(836) 评论(0) 推荐(1) 编辑
摘要: (自) Activity,Service属于主线程,在主线程中才能更新UI,如toast等。其他线程中不能直接使用,这时可以使用Handler来处理,Handler可以在Activity和Service中。 关于在非UI线程中进行UI操作会出现问题: Can't create handler inside thread that has not called Looper.prepare()这时有两种方式来解决:(一)在该非UI线程中创建消息队列(因为创建的工作线程默认是没有消息循环和消息队列的),Looper.prepare();.....;Looper.loop();newThre 阅读全文
posted @ 2011-02-27 20:45 Greenwood 阅读(6110) 评论(2) 推荐(3) 编辑