Can GeoCoder getFromLocation method cause a NetworkOnMainThreadException to be thrown?

喜夏-厌秋 提交于 2019-12-02 02:35:10

Seems like these Geocoder methods and any networking or i/o calls are going to throw up a NetworkOnMainThreadException. So, if in doubt, stick it in a separate thread!

Here's an example of how to call the GeoCoder.getFromLocation() method from another thread:

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);
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!