【发布时间】:2023-04-06 14:04:01
【问题描述】:
我正在尝试制作一个音乐应用程序,只是为了练习 Kotlin,我制作了一个 Recyclerview 和从外部存储中获取数据的函数。
现在我的问题是,当我向上或向下滚动时,它会一直滞后,我认为原因是在 onBindViewHolder 函数中,我使用此代码从 Uri 创建了一个位图
bitmap = MediaStore.Images.Media.getBitmap(contentResolver,album_uri)
然后我设置位图
holder.song_image.setImageBitmap(songList[position].image)
我想如果我在创建 Recyclerview 之前一次性创建所有位图并将它们放入 Arraylist 将有助于停止滞后,但确实有另一个问题,我无法在主要处理它线程导致它冻结。
我不知道该使用什么,所以我搜索了该使用什么,并阅读了有关协程的信息,但我觉得它有点用于延迟的多线程/任务等等,但我只需要做一个简单的任务无需冻结 UI 线程。
【问题讨论】:
-
您是否考虑过使用图像加载库,例如 Glide、Picasso 或 Coil?它们可以为您处理在后台线程上加载图像,并且通常很容易集成到应用程序中。
-
使用 Glide 加载图像而不是位图:github.com/bumptech/glide
-
非常感谢,伙计们。它与 Glide 完美配合,是的。我不认为我需要一个图书馆,但它为我节省了很多时间。请有人把它作为答案。
标签: android android-studio kotlin android-recyclerview android-asynctask