我希望问题是我想创建一个启动AsyncTask的方法,等待任务结束,然后返回onPostExecute方法中提供的值。所以从我的主要我只想调用方法并获取te AsyncTask返回的值。那可能吗?这种方法看起来怎么样?
答案 0 :(得分:1)
假设您有一个名为task的AsyncTask实例。在这种情况下,您可以:
task.execute(parameters);
Result result = task.get();
方法get()
将等到任务完成并返回结果。
P.S。您正在尝试同步执行异步任务,这引发了一个问题 - “您是否需要AsyncTask”?
答案 1 :(得分:1)
只需执行AsyncTask并调用包含逻辑onPostExecute()方法的特定方法。请参阅示例代码我使用的内容。
protected void onCreate(Bundle savedInstanceState) {
customContactList = (ListView)findViewById(R.id.listView1);
ContactsAsyncTask newTask = new ContactsAsyncTask(this);
newTask.execute();
}
private class ContactsAsyncTask extends AsyncTask<Void, Void, ArrayList<String> >{
ProgressDialog dialog;
private SecondActivity context;
public ContactsAsyncTask(SecondActivity secondActivity) {
// TODO Auto-generated constructor stub
this.context = secondActivity;
}
protected void onPostExecute(ArrayList<String> result) {
super.onPostExecute(result);
context.useContacts(result);
}
public void useContacts(ArrayList<String> data) {
adapter = new CustomAdapter(SecondActivity.this,data);
customContactList.setAdapter(adapter);
}