首页 > 解决方案 > Java Android:获取用户位置并发如何工作?

问题描述

我是 Java 和 Android 开发的新手。任务是获取用户的位置(已到达),我在变量“lat”中得到了 50.28.. 的结果, 就我试图在函数 OnSuccess之外打印此变量而言,我得到的值为 null。

由于缺乏知识,我只能假设问题是同步的,因为 OnSuccess 需要更多时间来运行,并且直到打印文本的那一刻它仍未初始化。但是我不确定我是否正确理解了这个问题,并想要求对其工作原理进行简短解释。

如何在我的程序中进一步使用 OnSuccess 的结果?

    FusedLocationProviderClient fusedLocationProviderClient;
    fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(mainActivity);

    Double lat = null; // variable for storing latitude

    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
    {
        /** If we have permission -> get location */
        if(mainActivity.getApplicationContext().checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED)
        {
            // get the location
            fusedLocationProviderClient.getLastLocation()
                    .addOnSuccessListener(new OnSuccessListener<Location>() {
                        @Override
                        public void onSuccess(Location location) {

                            if(location != null)
                            {
                                lat = location.getLatitude(); // = 50.28...
                            }
                        }
                    });
        }
    }

    binding.lat.setText(String.valueOf(lat)); // = null

标签: javaandroidsynchronizationlocation

解决方案


推荐阅读