Ваша проблема связана с вызовом downloadImage
внутри вашего execute("http.....")
метода, что заставляет процесс ждать, чего вы не хотите.
Когда вы вызываете get()
, он возвращает AsyncTask, который вы затем вызываете downloadImage
, а затем ждет, пока результат не будет доступен. Представление не обновляется до тех пор, пока не будет выполнен прослушиватель onClick, который после завершения загрузки.
См. Документ для получения здесь
измените свой downloadImage
метод на это.
public void downloadImage(View view){
ImageDownloader imageDownloader = new ImageDownloader();
imageDownloader.execute("https://upload.wikimedia.org/wikipedia/en/a/aa/Bart_Simpson_200px.png");
}
а затем переместите ваши манипуляции с изображениями в методы предварительного и последующего выполнения ImageDownloader. Открытый класс ImageDownloader расширяет AsyncTask {
@Override
protected Bitmap doInBackground(String... params) {
try {
URL url = new URL(params[0]);
HttpsURLConnection connection = (HttpsURLConnection)url.openConnection();
connection.connect();
InputStream inputStream = connection.getInputStream();
bitmap = BitmapFactory.decodeStream(inputStream);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return bitmap;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
spinner.setVisibility(View.VISIBLE);
}
@Override
protected void onPostExecute(Bitmap bitmap) {
imageView.setImageBitmap(bitmap);
spinner.setVisibility(View.GONE);
}
}