Мне нравится, как вы все объяснили, это, безусловно, хорошая идея для реализации.
Я реализовал подобный подход для аналогичного приложения пару месяцев назад, теперь ищу какие-то разные схемы, либо работающие вместе с ним, либо заменяющие его.
Я использовал размер стека кеша, равный количеству плиток, представленных на экране, и не ограничивал сопоставление плитки с тем же местоположением, что и предыдущая плитка. Я предполагаю, что это очень полезно, когда пользователь перемещает окно. Размер кэша - это компромисс между вычислительной мощностью, памятью и пропускной способностью. Чем больше плиток у вас в кеше, тем больше вы можете снова сэкономить пропускную способность за счет затрат памяти и обработки.
Я тоже использовал CRC16, но это не идеально для реализации, так как, когда он попадает в некоторые CRC в кеше, он создает очень странное изображение, что довольно раздражает, но очень редко. Лучше всего подбирать пиксель за пикселем, если вы можете себе это позволить с точки зрения вычислительной мощности. В моем случае я не мог.
Кэширование JPEG - лучшая идея для сохранения памяти, потому что, если мы создаем BITMAP из JPEG, ущерб уже нанесен по качеству, я предполагаю, что вероятность попадания неправильного CRC одинакова в обоих случаях. Я в моем случае использовал JPEG.