使用play-services-location:12.0.0设置定位更新遇构造器内部访问错误
解决LocationRequest构造器标记为internal的问题
嘿,这个坑我之前踩过!在com.google.android.gms:play-services-location:12.0.0版本里,Google确实把LocationRequest的构造器设为internal权限了,不让咱们直接通过new LocationRequest()来创建实例——这也是你看到报错的原因。
正确的解决方法
你需要改用LocationRequest提供的静态工厂方法create()来创建实例,之后再链式调用那些配置方法。修改后的代码应该是这样的:
locationClient.requestLocationUpdates( LocationRequest.create() .setInterval(5000) .setFastestInterval(1000) .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY), locationCallback, null );
为什么会有这个变化?
Google这么做是为了标准化LocationRequest的创建流程,后续版本他们可能会在工厂方法里添加更多内部初始化逻辑,直接用构造器的话可能会错过这些优化,甚至在更高版本里完全失效。所以官方推荐始终用create()方法来生成实例。
如果之后你升级到更高版本的location库,这个用法依然适用,不用再改回去啦。
内容的提问来源于stack exchange,提问作者Duncan Lukkenaer
相关产品推荐
相关产品推荐

