Skip to content

Commit

Permalink
Освобождать ресурс errorStream в случае ошибки загрузки
Browse files Browse the repository at this point in the history
  • Loading branch information
sadr0b0t committed Oct 4, 2020
1 parent 4b54211 commit 23a309e
Showing 1 changed file with 12 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,7 @@ private VideoThumbManager() {
private Bitmap defaultThumb = null;//BitmapFactory.decodeResource(R.drawable.bug1);

public Bitmap loadBitmap(final String url) throws IOException {
// 2020-10-03 22:14:23.911 27270-27314/su.sadrobot.yashlang W/OkHttpClient: A connection to https://i.ytimg.com/ was leaked. Did you forget to close a response body?

// если здесь будет IOException в openConnection или в connect, то вылетит весь метод
final HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
connection.connect();

Expand All @@ -77,6 +75,18 @@ public Bitmap loadBitmap(final String url) throws IOException {
if(input != null) {
input.close();
}
if(connection.getErrorStream() != null) {
// Сюда попадаем, если connection.getInputStream() вылетает с эксепшеном
// (на сервере нет иконки, которую пытаемся скачать)
// Это очень важное место:
// 1. Без него будет регулярно сыпаться ворнинг при прокрутке роликов в разных списках:
// 2020-10-03 22:14:23.911 27270-27314/su.sadrobot.yashlang W/OkHttpClient: A connection to https://i.ytimg.com/ was leaked. Did you forget to close a response body?
// 2. Хуже того, приложение может вылететь при быстрой прокрутке списка с большим
// количеством роликов, для которых удалены аналоги на сервере (иконка недоступна на сервере),
// если в этом же списке происходит обращение к б/д - вылетает ошибка:
// SQLiteCantOpenDatabaseException: unable to open database file
connection.getErrorStream().close();
}
connection.disconnect();
}

Expand Down

0 comments on commit 23a309e

Please sign in to comment.