在Method中启动AsyncTask并返回其值

时间:2013-09-14 17:19:02

标签: android android-asynctask

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

2 个答案:

答案 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);
}