我在 gridview 中处理动画,发现 hasStableIds()
被覆盖并返回 true
以保持项目的稳定 id。我想知道这如何影响我的 GridView 的性能?这是否增加了为每个项目保持稳定 ID 的额外开销?
最佳答案
简而言之:没有。
GridView
不负责选择 ID,因此这里没有任何开销。 ID 由数据源提供。在 hasStableIds()
中返回 true
不是请求稳定 ID 的方法,而是告诉 GridView
你是提供上述稳定性。
因此,开销(如果有的话)位于检索数据的代码中。 在典型情况下(从数据库中提取),ID 默认是持久的。
那么为什么 GridView
关心 ID 的稳定性呢?做一些可能实际上提高性能的有趣技巧:
- 配置更改的不同(希望更快和/或更稳健)处理。
- 如果设置了
CHOICE_MODE_SINGLE
,则能够返回一组已检查的 ID,从而避免将位置重新映射到 ID。
关于java - 在 BaseAdapter 中将 hasStableIds() 设置为 false 有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18589587/