Java 如何从mFusedLocationProviderClient获取结果(任务<;位置>;未运行??)

Java 如何从mFusedLocationProviderClient获取结果(任务<;位置>;未运行??),java,android,android-studio,fusedlocationproviderclient,Java,Android,Android Studio,Fusedlocationproviderclient,我是Android开发的新手,我正在制作一个地图应用程序,你必须在其中获取用户的当前位置。我目前正在使用FusedLocationProviderClient,正如文档所说的那样。每次我添加一个完整的侦听器并运行代码时,任务永远不会完成!关于android或Java,有什么我还没有学过的吗 我想我想问的是,为什么它只是跳过addOnCompleteListener,就好像任务根本没有运行一样?我对任务不是很熟悉,所以我试着做了一些研究,但没有发现任何有用的东西 我试图通过添加以下内容来检查它是否

我是Android开发的新手,我正在制作一个地图应用程序,你必须在其中获取用户的当前位置。我目前正在使用FusedLocationProviderClient,正如文档所说的那样。每次我添加一个完整的侦听器并运行代码时,任务永远不会完成!关于android或Java,有什么我还没有学过的吗

我想我想问的是,为什么它只是跳过addOnCompleteListener,就好像任务根本没有运行一样?我对任务不是很熟悉,所以我试着做了一些研究,但没有发现任何有用的东西

我试图通过添加以下内容来检查它是否成功:

//This loops Infinitely (I tested for 5 mins)
while(!tLocation.isSuccessful())
{
     System.out.println(tLocation.isComplete()); //This returns false
     System.out.println(tLocation.isCancelled()); //This also returns false
}
但它只是冻结了应用程序,而且永远也做不到

下面是我的项目中的一个代码示例(我调用此方法以获取位置):

私有位置模板定位//我要保存位置的位置
私有FusedLocationProviderClient mFusedLocationProviderClient;
public void getUserLocation(){
mFusedLocationProviderClient=LocationServices.getFusedLocationProviderClient(此);
如果(已授予位置许可)
{
试一试{
最终任务tLocation=mFusedLocationProviderClient.getLastLocation();
tLocation.addOnCompleteListener(这是新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
Location=tLocation.getResult();
模板位置=位置;
}
}
});
}捕获(安全异常e){
Toast.makeText(OtechLocation.getContext(),“找不到位置”,Toast.LENGTH_SHORT.show();
}
}否则
{
Toast.makeText(OtechLocation.getContext(),“启用位置服务以激活功能”,Toast.LENGTH_LONG.show();
}
}
如果你需要澄清什么,请告诉我!提前谢谢

private Location tempLocation; //Where I want to save the Location
private FusedLocationProviderClient mFusedLocationProviderClient;

public void getUserLocation() {
        mFusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this);
        if(mLocationPermissionGranted)
        {
            try {
                final Task<Location> tLocation = mFusedLocationProviderClient.getLastLocation();

                tLocation.addOnCompleteListener(this, new OnCompleteListener<Location>() {
                    @Override
                    public void onComplete(@NonNull Task<Location> task) {
                        if(task.isSuccessful()) {
                            Location location = tLocation.getResult();
                            tempLocation = location;
                        }
                    }
                });

            }catch (SecurityException e) {
                Toast.makeText(OtechLocation.getContext(), "Unable to find Location", Toast.LENGTH_SHORT).show();
           }
        } else
        {
            Toast.makeText(OtechLocation.getContext(), "Enable Location Services to activate feature", Toast.LENGTH_LONG).show();
        }
    }