提高微调器性能

时间:2011-03-22 15:17:59

标签: android performance spinner

我有12个微调器的工作活动,这些微调器链接到超过20,000条记录的单个数据库表。每个微调器都绑定到不同的查询以使选择动态(基于先前的选择)。代码有效,但由于数据库中查询的数量和表的大小,我的性能很差。初始布局需要20多秒才能加载。这是因为第一个微调器在布局期间被设置为初始选择,这导致其他11个微调器也被填充。使用微调器时性能也会受到影响。如果我要更改第一个选择,所有其他微调器都需要大约10秒才能更新。

我应该从哪里开始寻找更好的表现?数据库表?查询?或者我应该避免使用12个微调器?

2 个答案:

答案 0 :(得分:1)

听起来你并没有拖延UI线程,所以这很好。 您可以创建索引来加速数据库,但是通过分解查询而不是一次完成所有操作,您可能会获得最大的性能提升。因此,当Activity启动时,第一个Spinner将是唯一启用的控件。进行选择将触发第二个Spinner的查询并启用该查询,依此类推。

在这个(1小时)视频中有很多有用的性能: http://www.google.com/events/io/2010/sessions/writing-zippy-android-apps.html

答案 1 :(得分:0)

有了这么多选项,您应该考虑选择下钻列表。这将允许您拆分查询(每个活动一个),并且还允许当前列表占用所有屏幕。通过这种方式,您还可以为用户提供一种过滤当前列表的方法,如果您有很多选项,这可能是必须的。

此外:

  • 首先设置布局,然后开始加载数据。至少这种方式会在用户等待时出现。
  • 在AsyncTask / Thread中进行所有长时间运行以避免阻止UI线程
  • 确保您的数据库表上有主索引,并尽可能使用这些索引
  • 不要一次加载所有数据,只需根据需要执行每个查询