0
我做了一個啓動畫面,並使用可運行的線程從服務器解析xml文件,但是當我運行此程序時,它僅停留在初始屏幕,並且我使用wifimanage來判斷設備是否連接到Internet否則,如果不是,則跳過解析並跳轉到主要活動。如何使用線程來解析啓動畫面中的xml文件?
這裏是我的一些代碼,有人會如此友善地檢查出來嗎?
private static WifiManager mWifiManager;
private static UpdateInfo info;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.loading);
mWifiManager = (WifiManager)
this.getSystemService(Context.WIFI_SERVICE);
}
public UpdateInfo getUpdateInfo(InputStream is) throws Exception{
if (mWifiManager.getWifiState()==WifiManager.WIFI_STATE_ENABLED){
XmlPullParser parser = Xml.newPullParser();
parser.setInput(is, "utf-8");//設置解析的數據源
int type = parser.getEventType();
info = new UpdateInfo();//實體
while(type != XmlPullParser.END_DOCUMENT){
switch (type) {
case XmlPullParser.START_TAG:
if("version".equals(parser.getName())){
info.setVersion(parser.nextText()); //獲取版本號
}else if ("url".equals(parser.getName())){
info.setUrl(parser.nextText()); //獲取要升級的APK文件
}else if ("description".equals(parser.getName())){
info.setDescription(parser.nextText()); //獲取該文件的信息
}
break;
}
type = parser.next();
}
}else{
Intent intent = new Intent();
intent.setClass(loading.this, monkeynote.class);
startActivity(intent);
}
return info;
}
好,我改變了代碼,這一點,但應用仍停留在啓動畫面,這飛濺活動在這裏並沒有結束,該計劃最終將移動到下一個活動,在這裏是我的代碼的完整版本 – oratis
http://www.douban.com/note/183990155/ – oratis
嘗試使用SAX解析器,如果拋出異常,則用戶未連接到Internet。示例:http://www.mkyong.com/java/how-to-read-xml-file-in-java-sax-parser/ –