gpt4 book ai didi

java - Android 中处理 ImageView 的对象池?

转载 作者:行者123 更新时间:2023-12-02 06:00:58 25 4
gpt4 key购买 nike

在我的 Android 应用程序中,我创建了一个显示 9x9 字段的 View (请参阅简化的屏幕截图):

enter image description here

View 中的每个字段都由 ImageView 表示(显示图片而不是矩形)。某些 ImageView 将通过将其设置为 null 并将可见性设置为 View.GONE 来删除,并且每次将新元素添加到字段时都会创建新的 ImageView。这意味着我在短时间内创建了大量 ImageView。关键是,游戏在我的 HTC One 上运行得很好,但在一段时间后出现滞后(我认为是在垃圾收集运行时),然后它停止滞后并再次正常运行。

这让我想到使用Pool来管理我的对象,例如通过回收“已删除的 ImageView”并通过设置位置和更改图像源来重用它们。我正在为普通 Android 进行开发,但我考虑使用 LibGDX 框架。

我的问题是:您对如何在普通 Java/Android 中实现 Pool 有什么建议吗?我发现this帖子很有趣,我想我可以使用 Apache Commons ObjectPool。 Android 或 LibGDX 上有更好的方法吗?

注意: ImageView 每轮的位置并不相同。我使用 Tween 引擎移动它们。然而,图像浏览量是恒定的。意味着在游戏的某些时刻我确实有 81 个 ImageView (9*9) 加上一些用于为特殊事件设置动画的 ImageView(可能+10)。

如果有任何意见/建议,我将不胜感激。

最诚挚的问候,

吉米

最佳答案

根据Jimmy的建议,我发布我的评论作为答案

我建议使用某种集合,例如 List< ImageView > ,

  • 每个不再需要的 ImageView 都应该去那里

  • 如果需要一些新的 ImageView,那么您应该首先检查您的列表是否不包含该 ImageView,然后更新其背景和位置。

  • 当然,如果您使用它,则应该将其从列表中删除。
  • 仅当列表为空时才创建新的 ImageView。

我认为这是最简单的缓存机制之一,但它在例如ListView(行 View 的重用)中正常工作

关于java - Android 中处理 ImageView 的对象池?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22673586/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com