AsyncTask:我误解了什么?

Rob*_*Rob 1 java android asynchronous android-asynctask

activity包含一个内部private class,这基本上是它的样子,问题是:

public class MyActivity extends Activity
{
    // My xmlData that I want to fill in the asynchronous task
    XMLData xmlData;

    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);

        GetXMLTask task = new GetXMLTask(this);
        task.execute(url);

        if(xmlData == null) System.out.print("problem");
        // Prints "problem" : my xmlData is null, why?
    }

    private class GetXMLTask extends AsyncTask<String, Void, Void>
    {
        public GetXMLTask(Activity context)
        {
            // Constructor
        }

        protected Void doInBackground(String... params)
        {
            // Here some stuff to get and parse my XML
            xmlData = new XMLData(list);
            System.out.print(xmlData.list.size());
            // this line shows that I correctly fill my xmlData object
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是在调用内部异步类之后,我的xmlData值为null,我不知道为什么.我也试过这个GetXMLTask:

MyActivity.this.xmlData = new XMLData(list);
Run Code Online (Sandbox Code Playgroud)

虽然不起作用,为什么?我究竟做错了什么?谢谢你的帮助.

Gab*_*han 8

异步任务发生在另一个线程上.原始线程立即继续.因此,xmlData变量在将来某个未知时间之前不会更新,它不会立即就绪.