Android APP 在 getLastKnownLocation() 上崩溃
Posted
技术标签:
【中文标题】Android APP 在 getLastKnownLocation() 上崩溃【英文标题】:Android APP crash on getLastKnownLocation() 【发布时间】:2017-10-11 13:00:02 【问题描述】:我正在开发一个通过 NETWORK_PROVIDER 实现该位置的 android 应用程序,但我在 Android 7 上执行它时遇到问题(虽然它在以前的版本上正常工作)。这是代码:
LocationManager posM;
double latitude;
double longitude;
List<Address> addresses = null;
try
posM = (LocationManager) getSystemService(LOCATION_SERVICE);
Location location = posM.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
latitude = location.getLatitude();
longitude = location.getLongitude();
Geocoder geocoder;
geocoder = new Geocoder(Activity1.this, Locale.getDefault());
addresses = geocoder.getFromLocation(latitude, longitude, 1);
catch (IOException e)
e.printStackTrace();
我不知道它为什么会在 Android 7 上崩溃...谢谢您的帮助
【问题讨论】:
请添加堆栈跟踪 显示错误堆栈跟踪 请问,如何在手机上获取错误堆栈跟踪? 你在 android studio 底部的 android 监视器中得到它 “虽然它在以前的版本上正常工作”——不,它没有。它碰巧在您有限的测试中起作用。但是,正如 Gabe 所指出的,getLastKnownLocation()
会大量返回null
,您需要能够处理这些问题。 The documentation 描述了这个过程。仅将getLastKnownLocation()
用作优化,而不是您获取位置的主要方式。
【参考方案1】:
因为getLastKnownLocation
大部分时间都返回 null。系统一般不知道你的location
。使用requestLocationUpdates
或requestSingleUpdate
开启location
检测并获取实际位置。
【讨论】:
谢谢,但为什么这种情况只发生在 Android 7 上?它完美适用于 5... 它会成功还是失败,这取决于系统是否有一个它已经知道并且不是陈旧的位置,在任何操作系统上。您在 7 而不是 5 上看到它的事实是巧合。也许您有另一个应用程序正在使用您的 5 设备而不是 7 设备上的位置。或者缓存代码可能有点挂起。但它可以而且将会发生在任何操作系统版本上。 getLastKnownLocation 可以用作优化,但从不依赖。以上是关于Android APP 在 getLastKnownLocation() 上崩溃的主要内容,如果未能解决你的问题,请参考以下文章