の中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要素が表示されなくなります。
だから私の質問:このコードでUIスレッドをブロックせずにAsyncTaskから結果値を取得するにはどうすればよいですか?