【发布时间】:2015-08-15 11:37:42
【问题描述】:
按照here 的解释,我尝试访问片段中的最后一个已知位置
在我的 onCreate 中:
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mGoogleApiClient = new GoogleApiClient.Builder(getActivity())
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
}
在我的简历中:
@Override
public void onResume() {
super.onResume();
mGoogleApiClient.connect();
}
Fragment 实现 GoogleApiClient.ConnectionCallbacks、GoogleApiClient.OnConnectionFailedListener
并且 on Connected 被调用!!
@Override
public void onConnected(Bundle bundle) {
mLastLocation = LocationServices.FusedLocationApi.getLastLocation(
mGoogleApiClient);
if (mLastLocation != null) {
}
}
并且 mLastLocation 始终为空。每次我尝试调用 GetLastLocation() 时,它都会返回 null。
知道为什么吗?
【问题讨论】:
-
getLastLocation()很容易返回 null。它也不会请求新的位置,所以即使你得到一个位置,它也可能很旧,并且不能反映当前位置。最好注册一个监听器,即使您在收到第一个onLocationChanged()回调后取消注册也是如此。看看这个答案中的代码,它是注册位置监听器的一个非常精简和基本的实现:stackoverflow.com/questions/30191047/…
标签: android location google-play-services google-api-client