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