Я тестирую неполные URL-адреса в AsyncTask, чтобы обрабатывать недостающее изображение и использовать по умолчанию для моего изображения. Я заметил, что stacktrace печатается несколько раз. Я беспокоюсь, что это также создает это растровое изображение снова и снова. Это нормально? Какие-нибудь предложения по работе с этим лучше?HttpURLConnection catch block repeating
Код:
@Override
protected Bitmap doInBackground(String... params) {
Bitmap artistImg = null;
HttpURLConnection urlConnection = null;
try {
URL url = new URL(params[0]);
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.connect();
InputStream is = urlConnection.getInputStream();
artistImg = BitmapFactory.decodeStream(is);
} catch (FileNotFoundException e) {
e.printStackTrace();
artistImg = BitmapFactory.decodeResource(
context.getResources(), R.drawable.question);
} catch (Exception e) {
Log.v(LOG_TAG, "NETWORK ERROR");
} finally {
if (urlConnection != null) urlConnection.disconnect();
}
return artistImg;
}
StackTrace (повтор 15+ раз):
06-24 10:09:49.354 21523-21567/com.zosocoder.android.spotifystreamer W/System.err﹕ java.io.FileNotFoundException: https://i.scdn.co/image/792a417e8500405
06-24 10:09:49.354 21523-21567/com.zosocoder.android.spotifystreamer W/System.err﹕ at com.android.okhttp.internal.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:206)
06-24 10:09:49.355 21523-21567/com.zosocoder.android.spotifystreamer W/System.err﹕ at com.android.okhttp.internal.http.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210)
06-24 10:09:49.355 21523-21567/com.zosocoder.android.spotifystreamer W/System.err﹕ at com.android.okhttp.internal.http.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:25)
06-24 10:09:49.355 21523-21567/com.zosocoder.android.spotifystreamer W/System.err﹕ at com.zosocoder.android.spotifystreamer.ArtistAdapter$FetchArtistThumbTask.doInBackground(ArtistAdapter.java:85)
06-24 10:09:49.355 21523-21567/com.zosocoder.android.spotifystreamer W/System.err﹕ at com.zosocoder.android.spotifystreamer.ArtistAdapter$FetchArtistThumbTask.doInBackground(ArtistAdapter.java:68)
06-24 10:09:49.355 21523-21567/com.zosocoder.android.spotifystreamer W/System.err﹕ at android.os.AsyncTask$2.call(AsyncTask.java:292)
06-24 10:09:49.355 21523-21567/com.zosocoder.android.spotifystreamer W/System.err﹕ at java.util.concurrent.FutureTask.run(FutureTask.java:237)
06-24 10:09:49.356 21523-21567/com.zosocoder.android.spotifystreamer W/System.err﹕ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
06-24 10:09:49.356 21523-21567/com.zosocoder.android.spotifystreamer W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
06-24 10:09:49.356 21523-21567/com.zosocoder.android.spotifystreamer W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
06-24 10:09:49.356 21523-21567/com.zosocoder.android.spotifystreamer W/System.err﹕ at java.lang.Thread.run(Thread.java:818)
ты создание экземпляра AsyncTask несколько раз, например загружать изображения в ListView? – CSmith
@CSmith Да, он тянет изображение для каждого элемента списка. Прямо сейчас у меня есть только 3 элемента, один из которых имеет плохой URL. – ZosoCoder
Ваш адаптер списка getView() вызывается несколько раз для этой строки, в результате чего вы ставите в очередь 15 вызовов этого AsyncTask – CSmith