没有AsyncTask的主线程上的网络

时间:2015-07-31 15:58:41

标签: android android-asynctask return-value

在我的Android应用程序中,我有时需要等待连接到网络的AsyncTask结束,以获得结果,然后继续,取决于结果的值! 这就是我们在同步之前没有A的同步任务。但是我该怎么做:我的意思是如果我不在AsyncTask中执行它会返回一个android.os.NetworkOnMainThreadException(而这是我想要做的),并且AsyncTask无法返回结果!!!

每个人都有答案?

非常感谢!

2 个答案:

答案 0 :(得分:2)

  

我的意思是如果我不在AsyncTask中执行它会返回一个android.os.NetworkOnMainThreadException

没有。如果你不在后台线程中执行它(AsyncTask是这样做的一种方式),它将返回异常。

Painless Threading

  

并且AsyncTask无法返回结果!!!

不正确的。 AsyncTask可以通过onPostExecute()返回结果。这在The Documentation

中得到了很好的解释
  

我有时需要等待连接到网络的AsyncTask结束,以获得结果,然后根据结果的值继续进行!

好的,如果没有要完成的UI工作,请在获取结果时显示ProgressDialog。然后使用onPostExecute()根据结果处理下一个任务。

This answer说明了任务完成后如何获得结果。

此外,How to get result of onPostExecute()

答案 1 :(得分:2)

  

每个人都有答案?

是。不要在主线程上进行联网。周期。

使用异步任务和异步任务的onPostExecute()完全是为了在<{strong> doInBackground()完成后完成工作。此外,onPostExecute()正在UI线程上运行。所有这些is nicely documented