2011-11-12 2 views
0

스플래시 화면을 만들고 실행 가능한 스레드를 사용하여 서버에서 XML 파일을 구문 분석했지만이 프로그램을 실행할 때 스플래시 화면에서만 멈 췄고 인터넷에 연결되어 있는지 여부를 판단하는 데 wifimanage를 사용했습니다. 그렇지 않은 경우 구문 분석을 건너 뛰고 주 활동으로 건너 뜁니다.스플래시 화면에서 스레드를 사용하여 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 파서를 사용해보십시오. 예외가 발생하면 사용자가 인터넷에 연결되어 있지 않습니다. 여기의 예 : http://www.mkyong.com/java/how-to-read-xml-file-in-java-sax-parser/ –

관련 문제