0

我希望问题是我想创建一个启动 AsyncTask 的方法,等到 Task 结束,然后返回 onPostExecute 方法中提供的值。所以从我的主要我只想调用该方法并获取由 te AsyncTask 返回的值。那可能吗?这种方法看起来如何?

4

2 回答 2

1

假设您有一个名为 task 的 AsyncTask 实例。在这种情况下,您可以:

task.execute(parameters);
Result result = task.get();

方法get()将等到任务完成并从中返回结果。

PS您正在尝试同步执行异步任务,这引发了一个问题-“您是否需要AsyncTask”?

于 2013-09-14T17:29:45.710 回答
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);
}
于 2013-09-14T18:01:34.780 回答