Почему при получении снимка возвращается ноль, хотя изображение успешно кэшируется?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Почему при получении снимка возвращается ноль, хотя изображение успешно кэшируется?

Сообщение Anonymous »

Я пытаюсь реализовать кэширование изображений в своем приложении для Android с помощью Coil. Цель состоит в том, чтобы обеспечить кэширование изображений как в памяти, так и на диске, а затем получить кэшированное изображение как Uri. Однако я столкнулся с проблемой, когда при попытке получить снимок кэшированного изображения путь оказывается нулевым.
Вот моя функция getImage:
private suspend fun getImage(imageUri: String, force: Boolean): String {
Log.d("TAG", "getImage: $imageUri")

// Explicitly set a custom cache key
val cacheKey = imageUri.hashCode().toString()

// Create the ImageRequest
val request = ImageRequest.Builder(context).diskCachePolicy(CachePolicy.ENABLED)
.memoryCachePolicy(CachePolicy.ENABLED)
.data(imageUri)
.diskCacheKey(cacheKey).memoryCacheKey(cacheKey) // Ensure the key is not null
.build()

// Ensure the image is cached
with(context.imageLoader) {
if (force) {
diskCache?.remove(cacheKey)
memoryCache?.remove(MemoryCache.Key(cacheKey))
Log.d("TAG", "Cache cleared for key: $cacheKey")
}

val result = execute(request)
if (result is ErrorResult) {
Log.e("TAG", "Image caching failed: ${result.throwable}")
throw result.throwable
} else {
Log.d("TAG", "Image successfully cached with key: $cacheKey")
}
}

// Retrieve the cached image
val path = try {
context.imageLoader.diskCache?.openSnapshot(cacheKey)?.use { snapshot ->
val imageFile = snapshot.data.toFile()
Log.d("TAG", "Image file created: ${imageFile.absolutePath}")

val contentUri = getUriForFile(
context,
"dev.jay.momentbox.widget.fileprovider",
imageFile
)
Log.d("TAG", "Content URI created: $contentUri")

contentUri.toString()
}
} catch (e: Exception) {
Log.e("TAG", "Error retrieving image from cache: $imageUri", e)
null
}

// Log and return result
if (path == null) {
Log.e("TAG", "Path is null; image not found in cache.")
throw IllegalArgumentException("Couldn't find cached file for the provided URI")
} else {
Log.d("TAG", "Retrieved image path: $path")
}

return path
}

Вот вывод журнала:
2024-11-15 21:24:10.216 9155-9227 TAG dev.jay.momentbox D getImage: content://media/picker_get_content/0/com.android.providers.media.photopicker/media/1000015329
2024-11-15 21:24:10.217 9155-9198 WM-Processor dev.jay.momentbox D Work WorkGenerationalId(workSpecId=8c15c3a4-df4b-4828-9429-79f8d50901f5, generation=0) is already enqueued for processing
2024-11-15 21:24:10.505 9155-9227 TAG dev.jay.momentbox D Image successfully cached with key: -614239324
2024-11-15 21:24:10.512 9155-9227 TAG dev.jay.momentbox E Path is null; image not found in cache.


Подробнее здесь: https://stackoverflow.com/questions/791 ... ears-to-be
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»