2011-11-12 39 views
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; 

    } 

回答

1

您的代碼只在加載失敗時啓動活動。您需要將意圖創建移到else語句之外。你的方法改成這樣:

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(); 
    } 
    } 
    Intent intent = new Intent(); 
    intent.setClass(loading.this, monkeynote.class); 
    startActivity(intent); 


    return info; 

} 
+0

好,我改變了代碼,這一點,但應用仍停留在啓動畫面,這飛濺活動在這裏並沒有結束,該計劃最終將移動到下一個活動,在這裏是我的代碼的完整版本 – oratis

+0

http://www.douban.com/note/183990155/ – oratis

+0

嘗試使用SAX解析器,如果拋出異常,則用戶未連接到Internet。示例:http://www.mkyong.com/java/how-to-read-xml-file-in-java-sax-parser/ –