Android Studio - 对象构造函数中的NetworkOnMainThreadException

会挽雕弓如满月,西北望,射天狼。这篇文章主要讲述Android Studio - 对象构造函数中的NetworkOnMainThreadException相关的知识,希望能为你提供帮助。
我在AVObject brandObj = query.getFirst(); 的行中遇到NetworkOnMainThreadException的错误。在对错误进行了一些搜索后,我想我应该使用像Asynctask这样的东西。但无法弄清楚如何做到这一点。
AVObjectParseObject相同

public class Product { Product(AVObject object) { try { AVObject brandObj = query.getFirst(); // this one is making network request } catch (AVException e) { e.printStackTrace(); } } }

我应该extends AsyncTask< AVObject, Void, AVObject>
然后
@Override protected AVObject doInBackground(AVObject... objects) { return null; }

但不确定我应该在doInBackground写什么
有什么建议?
答案
当应用程序尝试在其主线程上执行网络操作时,将引发NetworkOnMainThreadException。仅针对Honeycomb SDK或更高版本的应用程序进行此操作。
您无法在主线程上执行任何网络连接,因为它可能会阻止UI。因此,您应该在单独的线程中执行所有操作。
AsyncTask是更简单的解决方案之一。设置您的AsyncTask(按照一些教程/指南)并将您的网络代码放入doInBackground()方法,该方法在一个单独的线程上运行。
另一答案理想情况下,对象的构造函数不执行磁盘I / O或网络I / O.在你的情况下,它确实如此。
【Android Studio - 对象构造函数中的NetworkOnMainThreadException】因此,调用qazxsw poi的每一段代码都需要放入后台线程(普通线程,Rxjava链,qazxsw poi,qazxsw poi等)。 new Product(...)本身不会改变。

    推荐阅读