在我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);
}
这可行,但我阻止了 UI 线程,asynctask.get();
这阻止了我在它执行的后台任务期间显示任何新的 UI 元素,如对话框。
所以我的问题是:如何从我的 AsyncTask 获取结果值而不阻塞给定此代码的 UI 线程?