我应该写像这样的东西吗?
return task.exec(session, state).get(json_timeout, TimeUnit.MILLISECONDS);
或者我可以这样做。
task.exec(session, state, result);
return result;
我已阅读了所有找到的文档,但没有找到答案。我的错...
我应该写像这样的东西吗?
return task.exec(session, state).get(json_timeout, TimeUnit.MILLISECONDS);
task.exec(session, state, result);
return result;
我已阅读了所有找到的文档,但没有找到答案。我的错...
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.
onPostExecute
中更新ui。如果asynctask在另一个文件中,则可以使用接口。
如何从AsyncTask返回布尔值?
AsyncTask#get()
方法会阻塞调用线程。
AsyncTask#execute()
方法将在单独的线程中运行,并在onPostExecute(...)
中传递Result
。
我建议不要使用get()
方法,除非特殊情况,如测试。 AsyncTask的整个目的是在doInBackground()
中执行一些长时间运行的操作,然后在完成后处理结果。
正常的AsyncTask执行示例如下:
Task task = new Task(){
@Override
protected void onPostExecute(Result result) {
super.onPostExecute(result);
//handle your result here
}
};
task.execute();