我应该那样写吗
return task.exec(session, state).get(json_timeout, TimeUnit.MILLISECONDS);
或者我可以这样做
task.exec(session, state, result);
return result;
A 已经阅读了我找到的所有文档,但没有找到答案。我的错...
我应该那样写吗
return task.exec(session, state).get(json_timeout, TimeUnit.MILLISECONDS);
或者我可以这样做
task.exec(session, state, result);
return result;
A 已经阅读了我找到的所有文档,但没有找到答案。我的错...
不要使用get()
. 它将阻塞 ui 线程,直到 asynctask 完成执行,不再使其异步。
使用 execute 和调用 asynctask
new task().exec(session, state, result);
您也可以将参数传递给构造函数asynctask
或doInbackground()
http://developer.android.com/reference/android/os/AsyncTask.html
public final Result get ()
Added in API level 3
Waits if necessary for the computation to complete, and then retrieves its result.
您可以使您的 asynctask 成为您的活动类的内部类,并在onPostExecute
.
如果 asynctask 在不同的文件中,那么您可以使用 interface.
AsyncTask#get()
将阻塞调用线程。
AsyncTask#execute()
将在单独的线程中运行并传递Result
in onPostExecute(...)
。
我建议不要使用该get()
方法,除非在测试等特殊情况下。AsyncTask 的全部目的是执行一些长时间运行的操作,doInBackground()
然后在完成后处理结果。
正常 AsyncTask 执行的一个示例如下所示:
Task task = new Task(){
@Override
protected void onPostExecute(Result result) {
super.onPostExecute(result);
//handle your result here
}
};
task.execute();