Android:从AsyncTask获取返回值而不阻塞UI线程

Edw*_*aak 1 java android android-asynctask

在我的内部onCreate,Activity我做了以下几点:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);         
    AsyncTask<String, Integer, String[]> asynctask = new DownloadFilesTask(this.getActivity()).execute(url);
    String[] values = null;         
    try {
        values = asynctask.get();
    } catch (InterruptedException e) {          
        e.printStackTrace();
    } catch (ExecutionException e) {
        e.printStackTrace();
    }
    Log.d("AsyncTask", "DONE!");        
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
            android.R.layout.simple_list_item_1, values);

    setListAdapter(adapter);
}
Run Code Online (Sandbox Code Playgroud)

这有效,但我阻止了UI线程asynctask.get();,阻止我在执行后台任务期间显示任何新的UI元素,如对话框.

所以我的问题是:如何在不阻止给定此代码的UI线程的情况下从AsyncTask获取结果值?

Ant*_*n-M 5

把它移到onPostExecute:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
        android.R.layout.simple_list_item_1, values);

setListAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)