如何在完成函数之前等待任务完成?

pkmbmrz7  于 2021-06-29  发布在  Java
关注(0)|答案(2)|浏览(536)

我有功能 getCoordinates() 要获取位置,如下所示:

public void getCoordinates(FusedLocationProviderClient fusedLocationProviderClient){
        Task<Location> lastLocation = fusedLocationProviderClient.getLastLocation();

        lastLocation.addOnSuccessListener(new OnSuccessListener<Location>() {
            @Override
            public void onSuccess(Location location) {
                if (location != null) {
                    lat = location.getLatitude() + "" ;
                    lon = location.getLongitude() + "";

                }
            }
        });
    }

打过电话之后 getCoordinates() 我需要调用函数 getCityName() ,它使用上一个函数中的坐标。
但由于第二个函数在第一个函数完成任务之前启动,所以我的程序不能正常工作。
怎么可能等呢 addOnSuccessListener 完成并完成第一个函数,所以值总是初始化的?

wsewodh2

wsewodh21#

只需在回调中调用函数:

public void getCoordinates(FusedLocationProviderClient fusedLocationProviderClient){
        Task<Location> lastLocation = fusedLocationProviderClient.getLastLocation();

        lastLocation.addOnSuccessListener(new OnSuccessListener<Location>() {
            @Override
            public void onSuccess(Location location) {
                if (location != null) {
                    lat = location.getLatitude() + "" ;
                    lon = location.getLongitude() + "";
                    getCityName(lat,lon);
                }
            }
        });
    }
6tqwzwtp

6tqwzwtp2#

尝试在onsuccess方法中调用第二个方法getcityname()。

相关问题