Вот мой код:ProgressBar не показывая, андроид
automaticCountryButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
progressBar.setVisibility(View.VISIBLE);
if (ContextCompat.checkSelfPermission(HomeActivity.this,
Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED){
setUpLocationPermission();
return;
}
Log.d(TAG, String.valueOf(gps.canGetLocation()));
Log.d(TAG, String.valueOf(gps.getLocation()));
Log.d(TAG, String.valueOf(gps.getLatitude()));
Log.d(TAG, String.valueOf(gps.getLongitude()));
Geocoder myLocation = new Geocoder(HomeActivity.this);
try
{
myList = myLocation.getFromLocation(gps.getLatitude(), gps.getLongitude(), 1);
}
catch (Exception e)
{
Log.d(TAG, "unable");
e.printStackTrace();
}
if(myList != null) {
try {
String country = myList.get(0).getCountryName();
Log.d(TAG, country);
findCountryInArrayList(country);
}
catch (Exception e)
{
Toast.makeText(HomeActivity.this, "Didn't manage to automatically detect location.", Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
}
}
});
}
Я хочу, чтобы сразу же после того, как точка зрения щелкнул прогрессбар станет видимым. Тем не менее, он не становится видимым, пока весь код не будет закончен, что противоречит целям. Почему это не происходит прямо в начале щелчка? Я положил progressBar.setVisibility (View.VISIBLE) вверху, почему он выполняется только после завершения всего кода, что иногда занимает несколько секунд.
Большое спасибо.
Спасибо тонну. Это точно. – RJB
Но почему это так, если первая строка кода - установить видимость? Только позже я делаю работу над потоком пользовательского интерфейса? – RJB
Фактический метод 'onClick' здесь запускается в потоке, который управляет пользовательским интерфейсом. Фактическое действие рендеринга не произойдет до тех пор, пока этот метод не вернется. Если для этого метода потребуется 5 секунд, для этого 5 секунд не будет рендеринга экрана. –