Я новичок в 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
}
Но тогда оно просто замораживает приложение, и оно никогда не будет сделано!
Вот пример кода из моего проекта (я вызываю этот метод для получения Location):
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();
}
}
Если вам нужно что-то прояснить, просто дайте мне знать! Заранее спасибо!