android-GeoCoder getFromLocation方法可以引发NetworkOnMainThreadException吗?

android-GeoCoder getFromLocation方法可以引发NetworkOnMainThreadException吗?,第1张

概述我有一个经过全面测试的应用程序,并且可以在AndroidGingerbread(和较旧的Android版本)上正常工作.我已经从用户报告的崩溃错误中注意到,运行更高版本的Android *** 作系统的手机正在抛出NetworkOnMainThreadException.我试图通过我的代码,消除/修复所有的罪魁祸首.如果从主线程/用户

我有一个经过全面测试的应用程序,并且可以在Android Gingerbread(和较旧的AndroID版本)上正常工作.我已经从用户报告的崩溃错误中注意到,运行更高版本的AndroID *** 作系统的手机正在抛出networkonmainthreadException.

我试图通过我的代码,消除/修复所有的罪魁祸首.如果从主线程/用户界面线程调用,则GeoCoder的getFromLocation和getFromLocationname方法会抛出networkonmainthreadException吗?

解决方法:

似乎这些Geocoder方法以及任何网络或I / O调用都将引发networkonmainthreadException.因此,如有疑问,请将其粘贴在单独的线程中!

这是一个如何从另一个线程调用GeoCoder.getFromLocation()方法的示例:

new AsyncTask<GeoPoint, VoID, Address>(){  @OverrIDe  protected Address doInBackground(GeoPoint... geoPoints)  {    try    {      Geocoder geoCoder = new Geocoder(context);      double latitude = geoPoints[0].getLatitudeE6() / 1E6;      double longitude = geoPoints[0].getLongitudeE6() / 1E6;      List<Address> addresses = geoCoder.getFromLocation(latitude, longitude, 1);      if (addresses.size() > 0)        return addresses.get(0);    }    catch (IOException ex)    {      // log exception or do whatever you want to do with it!    }    return null;  }  @OverrIDe  protected voID onPostExecute(Address address)  {    // do whatever you want/need to do with the address found    // remember to check first that it's not null  }}.execute(myGeoPoint);
总结

以上是内存溢出为你收集整理的android-GeoCoder getFromLocation方法可以引发NetworkOnMainThreadException吗?全部内容,希望文章能够帮你解决android-GeoCoder getFromLocation方法可以引发NetworkOnMainThreadException吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1093764.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存