Во-первых, не получайте 100 одновременно, вы не сможете отобразить 100 изображений в сетке и получить их видимый размер. Получите изображения асинхронно и получите полный экран или половину экрана за раз. Я предполагаю, что вы можете отображать от 6 до 9 изображений приличного размера на экран с поддержкой текстовых / UI-элементов, вы можете даже выбрать, сколько из них отображать в зависимости от размера / разрешения экрана телефона. Таким образом, вы, вероятно, должны получать от 9 до 12 изображений одновременно.
Во-вторых, я не знаю, в каком разрешении эти изображения, но это звучит как «большое». Если API поддерживает его, вы получите только уменьшенную версию для вашего вида сетки. Если нет, то, вероятно, я бы сделал следующее: когда вы получаете изображение от API, сначала создайте новое изображение, уменьшенное до размера, необходимого для вашего эскиза, и поместите его в сетку, сохраните в памяти. Затем создайте новое изображение, уменьшенное до размера, необходимого для вашего «подробного» экрана (если он у вас есть), и кешируйте его на SD-карту и освободите от оперативной памяти, а также от исходного исходного изображения, это масштабирование должно произойти в отдельном потоке, чтобы избежать влияния на скорость отклика вашего потока пользовательского интерфейса. В зависимости от модели использования, я бы, вероятно, также кэшировал миниатюры на SD-карту, поэтому было бы дешево освободить оперативную память, которую они используют в onStop / onPause, и перезагрузить их в onStart / onResume. Это также звучит так, как будто вы загружаете «топ-100» или что-то в этом роде. Так как я не ожидал бы, что новые топ-100 появятся при каждом использовании приложения, вы можете сэкономить большой сетевой трафик, кэшируя изображения и информацию на SD-карту и загружая новые записи только при каждом запуске программы.
В качестве альтернативы такой процесс, как:
Получить изображение -> Масштабировать по месту до размера детализации -> Размер детализации кеша -> Масштабировать детализацию до размера миниатюры по месту -> Отображать миниатюру в виде сетки при асинхронном кэшировании миниатюры
Было бы использовать еще меньше памяти, так как в памяти осталась только одна копия изображения, но это замедляло бы отклик вида сетки, так как изображение должно быть масштабировано дважды, прежде чем оно будет отображено. Это может быть достаточно быстро, чтобы не иметь значения, или вы можете играть в хитрости с видом сетки, отображая большое изображение (масштабированное внутри), в то время как миниатюра генерируется в фоновом режиме, переключая вид сетки на миниатюру, когда она будет готова. Вам просто нужно попробовать, чтобы определить, достаточно ли быстро.