Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在方法中启动AsyncTask并返回其值_Android_Android Asynctask - Fatal编程技术网

Android 在方法中启动AsyncTask并返回其值

Android 在方法中启动AsyncTask并返回其值,android,android-asynctask,Android,Android Asynctask,我希望问题是我想创建一个方法,它启动一个异步任务,等待任务结束,然后返回onPostExecute方法中提供的值。因此,在我的main中,我只想调用该方法并获取由te AsyncTask返回的值。可能吗?这个方法应该是什么样子的?假设您有一个名为task的AsyncTask实例。在这种情况下,您需要: task.execute(parameters); Result result = task.get(); 方法get()将等待任务完成,并从中返回结果 另外,您正试图同步执行异步任务,这就提出

我希望问题是我想创建一个方法,它启动一个异步任务,等待任务结束,然后返回onPostExecute方法中提供的值。因此,在我的main中,我只想调用该方法并获取由te AsyncTask返回的值。可能吗?这个方法应该是什么样子的?

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

task.execute(parameters);
Result result = task.get();
方法
get()
将等待任务完成,并从中返回结果


另外,您正试图同步执行异步任务,这就提出了一个问题——“您到底需要异步任务吗”

只需执行异步任务,并调用包含逻辑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);
}
创建时受保护的void(Bundle savedInstanceState){
customContactList=(ListView)findViewById(R.id.listView1);
ContactsAsyncTask newTask=新的ContactsAsyncTask(此);
newTask.execute();
}
私有类ContactsSyncTask扩展异步任务{
进程对话;
私人活动语境;
公共联系人SYNCTASK(第二项活动第二项活动){
//TODO自动生成的构造函数存根
this.context=secondActivity;
}
受保护的void onPostExecute(ArrayList结果){
super.onPostExecute(结果);
上下文。使用联系人(结果);
}
公共联系人(ArrayList数据){
adapter=新的CustomAdapter(SecondActivity.this,data);
customContactList.setAdapter(适配器);
}

Post您到目前为止所拥有的内容。此外,它应该有助于-1建议
get()
+1用于描述它的效果,如冻结
UI
,直到其完成。有很多原因需要执行OP尝试执行的操作,以及高效执行的方法,如使用
界面
从Internet下载图像时,在返回此图像的回调方法中仍然需要。