Я пишу простой класс, который может загружать изображения и записывать их в кеш. Если один URL запрашивается дважды, любое существующее задание на загрузку этого файла должно быть отменено.
Могу ли я просто использовать HashMap и сохранять запущенные задания? Или это приведет к утечкам памяти, если готовые задания все еще находятся в HashMap?
Вот некоторые фрагменты из моего кода:
HashMap:
val jobs = HashMap<Int, Job>()
Cache Fun:
fun doCache(url: String) {
val hash = url.hashCode()
jobs[hash]?.cancel()
val job = Job()
jobs[jobTag] = job
val cached = File(cacheDir, "img-$hash.dat")
CoroutineScope(Dispatchers.IO + job).launch {
download(url, cached)
}
}