mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-22 12:08:34 +00:00
Fixes a significant memory leak in the sticker keyboard, which caused UI lag and system slowdowns, particularly on lower-end devices.
Closes signalapp/Signal-Android#14283 Fixes signalapp/Signal-Android#13770
This commit is contained in:
committed by
Jeffrey Starke
parent
7c7f2ff2aa
commit
ccd36f199a
@@ -41,11 +41,12 @@ class KeyboardStickerListAdapter(
|
|||||||
|
|
||||||
private inner class StickerViewHolder(itemView: View) : MappingViewHolder<Sticker>(itemView) {
|
private inner class StickerViewHolder(itemView: View) : MappingViewHolder<Sticker>(itemView) {
|
||||||
|
|
||||||
private val image: ImageView = findViewById(R.id.sticker_keyboard_page_image)
|
val image: ImageView = findViewById(R.id.sticker_keyboard_page_image)
|
||||||
|
|
||||||
override fun bind(model: Sticker) {
|
override fun bind(model: Sticker) {
|
||||||
requestManager.load(model.uri)
|
requestManager.load(model.uri)
|
||||||
.set(ApngOptions.ANIMATE, allowApngAnimation)
|
.set(ApngOptions.ANIMATE, allowApngAnimation)
|
||||||
|
.skipMemoryCache(true)
|
||||||
.transition(DrawableTransitionOptions.withCrossFade())
|
.transition(DrawableTransitionOptions.withCrossFade())
|
||||||
.into(image)
|
.into(image)
|
||||||
|
|
||||||
@@ -62,6 +63,12 @@ class KeyboardStickerListAdapter(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onViewRecycled(holder: MappingViewHolder<*>) {
|
||||||
|
if (holder is StickerViewHolder) {
|
||||||
|
requestManager.clear(holder.image)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
data class StickerHeader(override val packId: String, private val title: String?, private val titleResource: Int?) : MappingModel<StickerHeader>, HasPackId, Header {
|
data class StickerHeader(override val packId: String, private val title: String?, private val titleResource: Int?) : MappingModel<StickerHeader>, HasPackId, Header {
|
||||||
fun getTitle(context: Context): String {
|
fun getTitle(context: Context): String {
|
||||||
return title ?: context.resources.getString(titleResource ?: R.string.StickerManagementAdapter_untitled)
|
return title ?: context.resources.getString(titleResource ?: R.string.StickerManagementAdapter_untitled)
|
||||||
|
|||||||
Reference in New Issue
Block a user