[英]Laggy Lazy Column Android Compose
我在Jetpack Compose中創建了一個完整的應用程序。 但是, Lazy Column
的表現非常糟糕,沒有任何意義。 Lazy Column
應該是RecyclerView
的替代品,但RecyclerView
目前的效果要好得多。
我制作了一個帶有標題和Lazy Rows
作為項目的Lazy Column
(基本上是一個嵌套列表)。 如您所見,有圖像,但我使用了Coil 庫,因此所有內容都應加載到單獨的線程中。 我已經看過這些討論: link1 , link2 。 但似乎這個問題沒有解決方案,即使現在Jetpack Compose是穩定的。
你們有沒有找到一種方法來獲得更好的性能,或者我應該用RecyclerView
替換這個Lazy Rows
嗎?
這是頁面的屏幕:
LazyColumn() {
items(
count = cartItems.size,
key = {
cartItems[it].cartItem.id
},
itemContent = { index ->
val cartItemData = cartItems[index]
CartItemWithActions(data = cartItemData)
Divider(
color = colorResource(id =R.color.separator_line)
)
}
)
}
設置密鑰的工作方式類似於RecyclerView
中的DiffUtil
class 。 檢查Maciej Przybylski 的帖子。
remember{}
塊的變量。@Composable
fun MyComposable() {
...
val wrongList = myViewModel.getList() <- Don't do this
val correctList = remember { myViewModel.getList() } <- Do this
...
}
當然,列表應該是State
以便您觀察它是否發生變化。 每次重新組合列表時不使用記住,將調用myViewModel.getList()
。
contentType
,它在列表中定義 object 的類型。 如果列表中有標題或不同類型的對象,這很有用。 在這里了解更多。檢查這些資源再也不會出現性能問題。 我強烈建議觀看這些視頻:優化 Jetpack Compose 的渲染性能、Jetpack Compose的性能最佳實踐,並閱讀這篇文章。
解決了! 閱讀此reddit我發現問題僅在調試版本中。 這看起來很瘋狂,但這是真的。 這是因為 Compose 應用程序的調試版本在后台有很多影響性能的事情(與 Flutter 發生的情況非常相似)。 要解決此問題,您唯一需要做的就是創建應用程序的發布版本。 為此, go構建->生成簽名包/APK 。 創建密鑰,然后 select release 。
享受您流暢的應用程序!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.