編輯:Android開發教程
介紹
在 Android 中與服務端做 HTTP 通信,解析 XML,通過 Handler 實現異步消息處理
HTTP 通信 - 與服務端做 HTTP 通信,分別以 GET 方式和 POST 方式做演示
XML 解析 - 可以用兩種方式解析 XML,分別是 DOM 方式和 SAX 方式
異步消息處理 - 通過 Handler 實現異步消息處理,以一個自定義的異步下載類來說明 Handler 的用法
1、HTTP 通信和 XML 解析的 Demo
MySAXHandler.java
package com.webabcd.communication;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
// 繼承 DefaultHandler 以實現指定 XML 的 SAX 解析器
// DOM - W3C 標准,需要把 xml 數據全部加載完成後才能對其做解析,可對樹做任意遍歷
// SAX - 流式解析,通過事件模型解析 xml,只能順序解析
public class MySAXHandler extends DefaultHandler {
private boolean mIsTitleTag=false;
private boolean mIsSalaryTag=false;
private boolean mIsBirthTag=false;
private String mResult="";
// 打開 xml 文檔的回調函數
@Override
public void startDocument() throws SAXException {
// TODO Auto-generated method stub
super.startDocument();
}
// 關閉 xml 文檔的回調函數
@Override
public void endDocument() throws SAXException {
// TODO Auto-generated method stub
super.endDocument();
}
// 一發現元素開始標記就回調此函數
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
if (localName == "title")
mIsTitleTag=true;
else if (localName == "salary")
mIsSalaryTag=true;
else if (localName == "dateOfBirth")
mIsBirthTag=true;
else if (localName == "employee")
mResult += "\nname:" + attributes.getValue("name");
}
// 一發現元素結束標記就回調此函數
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
if (localName == "title")
mIsTitleTag=false;
else if (localName == "salary")
mIsSalaryTag=false;
else if (localName == "dateOfBirth")
mIsBirthTag=false;
}
// 一發現元素值或屬性值就回調此函數
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
if (mIsTitleTag)
mResult += new String(ch, start, length);
else if (mIsSalaryTag)
mResult += " salary:" + new String(ch, start, length);
else if (mIsBirthTag)
mResult += " dateOfBirth:" + new String(ch, start, length);
}
public String getResult(){
return mResult;
}
}
上周谷歌版Galaxy S4(GT-I9505)的Android 4.3 Jelly Bean刷機包流出,也讓我們初步了解了Android 4.3的一些新特性。那麼,An
AutoCompleteTextView和EditText很相似,事實上,AutoCompleteTextView就是EditText的子類。使用 AutoComplet
android app一般性架構設計一.UI層(Activity+Fragment基類設計+部分自定義控件)KJActivity(Activity繼承鏈的規范)I_KJA
這裡歸納寫一個android網絡框架的一般性原理:Http網絡請求原理學過《計算機網絡》的應該都知道http是一種應用層協議,它通過tcp實現了可靠的數據傳輸,能夠保證數