0

私はAndroid開発の初心者です。今、私は解析しようとしています。XML を解析するためのチュートリアルがたくさんあります。しかし、XML を非同期的に解析する方法を知りたいです。私はどこかで、AsyncTask を使用して xml を非同期にロードできることを発見しました。誰でもそれを見つけるのを手伝ってもらえますか。

前もって感謝します

4

2 に答える 2

3

AsyncTask を使用するためのチュートリアルは次のとおりです。

http://droidapp.co.uk/?p=177

そして、RSS / XML を解析するためのもの:

http://droidapp.co.uk/?p=166

AsyncTask の doInBackground で解析関数を呼び出す必要があります。

于 2012-05-22T06:34:58.770 に答える
1
public class _StackOverflowActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        String yourXmlString = "<put your xml String here>"; 

        ParseXMLTask parseXMLTask = new ParseXMLTask();
        parseXMLTask.execute(yourXmlString); 
    }

    class ParseXMLTask extends AsyncTask<String, Void, Void> {
        @Override
        protected Void doInBackground(String... params) {
            String yourXml = params[0]; 

            //Parse your xml here
            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(result);
            //do something after parsing is done
        }   
    }
}

まず、クラス AsyncTask を拡張する必要があります。この例では、ParseXMLTask という名前を付けました。

AsyncTask では、「doInBackground」というメソッドを 1 つ実装する必要があります。doInBackground は別のスレッドで実行され、そこに xml を解析するためのコードを配置します。

スレッドが終了すると、onPostExecute が呼び出されます。onPostExecute はメイン スレッドで実行されます。doInBackground の終了後に何かを実行する場合は、これを使用できます。

ParseXMLTask を使用するには、それをオブジェクトにインスタンス化する必要があります。次に、コマンドを実行し.execute()ます。execute私が行ったことと同様に、オブジェクトを渡すことができますparseXMLTask.execute(yourXmlString);。好きなだけ変数を渡すことができ、 とdoInBackground同様に処理してくださいString yourXml = params[0];。2 番目の変数が .execute say...parseXml.execute(yourXmlString, my2ndVariable);に渡されている場合は、doInBackground でそれを処理します。

 String yourXml = params[0]; 
 String the2ndVariable = params[1];

.execute を呼び出すと、別のスレッドで doInBackground に配置したコードを実行するように AsyncTask に指示します。

于 2012-05-22T06:40:56.260 に答える