【问题标题】:Do I need a listener and a callback with FusedLocationProviderClient?我需要 FusedLocationProviderClient 的侦听器和回调吗?
【发布时间】:2019-04-23 08:52:08
【问题描述】:

我开始使用 FusedLocationClient,但我不确定为什么我需要 OnSuccessListener 和 LocationCallback。不应该只是其中之一就足够了吗?

private void initLocationCallback(Context context) {
    fusedLocationClient = LocationServices.getFusedLocationProviderClient(context);
    fusedLocationClient.getLastLocation()
            .addOnSuccessListener(new OnSuccessListener<Location>() {
                @Override
                public void onSuccess(Location location) {
                    onLocationChanged(location);
                }
            });

    locationCallback = new LocationCallback() {
        @Override
        public void onLocationResult(LocationResult locationResult) {
            if (locationResult != null) {
                for (Location location : locationResult.getLocations()) {
                    if (location != null) {
                        onLocationChanged(location);
                    }
                }
            }
        }
    };
    LocationRequest locationRequest = LocationRequest.create();
    locationRequest.setInterval(INTERVAL);
    locationRequest.setFastestInterval(FASTEST_INTERVAL);
    fusedLocationClient.requestLocationUpdates(locationRequest, locationCallback, context.getMainLooper());  
}
private void onLocationChanged(Location location) {
    // use location...
}

【问题讨论】:

    标签: android google-play-services android-location fusedlocationproviderclient


    【解决方案1】:

    根据documentation 获取lastKnownLocation() 时,OnSuccessListener 在极少数情况下也应该足够了 Location 可能为空。

    个性我也用OnSuccessListener()

    【讨论】:

      【解决方案2】:

      如果您对用户此时的确切位置不感兴趣,那么 lastKnownLocation() 和 OnSuccessListener 就足够了,您不需要 LocationCallback。

      但是,如果您想要精确的位置并且想要定期更新以防用户移动,那么您需要实现 LocationCallback 以不断获取位置更新。在这种情况下,您通常需要最后一个已知位置,因为获取位置更新可能需要一些时间。

      【讨论】:

        猜你喜欢
        • 2013-02-15
        • 2015-05-21
        • 1970-01-01
        • 1970-01-01
        • 2013-05-02
        • 1970-01-01
        • 2021-09-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多