【发布时间】:2011-05-25 21:58:24
【问题描述】:
我们有一个数据驱动的活动,它构建了一大组(通常最多 100 个)类似 Button 的组件,并将它们放置在 Scrollable 中。每个按钮都是从资源膨胀而来的,并且基于RelativeLayout。该按钮有两个文本视图、两个图像视图 - 都来自资源 - 并且有一个 9-patch 的背景。
图像视图的大小、位置、文本和配置均由数据库查询驱动。
不幸的是,在 HTC Desire 上布局需要 2-3 秒,在 HTC San Francisco 或 HTC Sapphire 上需要 3-5 秒。
初始布局完成后,视图的效果非常好。
我们尝试了许多策略,但没有任何区别:
- 数据库查询时间 - 这不是延迟的重要部分。
- 缓存按钮,以减少布局膨胀量。
- 在“实时”视图层次结构之外构建视图子树,然后在完成时连接它。
- 在另一个线程上执行相同的操作,但将子树连接到 UI 线程上的活动。
我们有一个不确定的进度指示器(spinner/throbber),当查询在另一个线程上运行时它会旋转,但在布局开始时会冻结。
所以,我的问题是:
- 如何使视图的布局看起来更具响应性或
- 如何避免在布局发生时锁定 thobber
谢谢。
编辑
滚动条设置为水平和垂直滚动。所以我们有一个网格,屏幕是一个视口。
这使得使用内置的 ListView(乍一看)不适合该任务。
【问题讨论】:
-
我用它来提高响应能力stackoverflow.com/questions/2293488/…
标签: android performance layout android-layout