2011-11-12 16 views
0

私はスプラッシュ画面を作成し、サーバからxmlファイルを解析するために実行可能なスレッドを使用しましたが、このプログラムを実行するとスプラッシュ画面が表示され、Wi-Fiイメージを使ってデバイスがインターネットに接続されているかどうかを判断しましたそうでない場合は、解析をスキップしてメインアクティビティにジャンプします。スレッドを使用してスプラッシュ画面で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/ –