Android 提高纺纱机性能
我有12个微调器的工作活动,它们链接到一个包含20000多条记录的数据库表。每个微调器都绑定到不同的查询,以使选择动态(基于先前的选择)。代码可以工作,但由于查询的数量和数据库中表的大小,我的性能很差。加载初始布局需要20秒以上的时间。这是因为在布局过程中,第一个微调器被设置为初始选择,这会导致其他11个微调器也被填充。使用微调器时,性能也会受到影响。如果我要更改第一个选择,所有其他微调器更新大约需要10秒钟Android 提高纺纱机性能,android,performance,spinner,Android,Performance,Spinner,我有12个微调器的工作活动,它们链接到一个包含20000多条记录的数据库表。每个微调器都绑定到不同的查询,以使选择动态(基于先前的选择)。代码可以工作,但由于查询的数量和数据库中表的大小,我的性能很差。加载初始布局需要20秒以上的时间。这是因为在布局过程中,第一个微调器被设置为初始选择,这会导致其他11个微调器也被填充。使用微调器时,性能也会受到影响。如果我要更改第一个选择,所有其他微调器更新大约需要10秒钟 我应该从哪里开始寻找更好的性能?数据库表?询问?或者我应该避免使用12个微调器吗?听起
我应该从哪里开始寻找更好的性能?数据库表?询问?或者我应该避免使用12个微调器吗?听起来你没有暂停UI线程,所以这很好。 您可以创建索引来加快数据库的速度,但通过将查询拆分而不是一次完成所有查询,您可能会获得最大的性能提升。因此,当活动启动时,第一个微调器将是唯一启用的控件。进行选择将触发对第二个微调器的查询并启用该微调器,依此类推 在这段(1小时)的视频中,有很多有用的表演素材:
有很多选项,你应该考虑下一个钻削列表。这将允许您拆分查询(每个活动一个),并允许当前列表占据整个屏幕。通过这种方式,您还可以为用户提供一种过滤当前列表的方法,如果您有很多选项,这可能是必须的 此外:
- 首先设置布局,然后开始加载数据。至少这样,在用户等待时会出现一些东西
- 在异步任务/线程中执行所有长时间运行的工作,以避免阻塞UI线程
- 确保数据库表上有主索引,并尽可能使用这些索引进行查询
- 不要一次加载所有数据,只需根据需要执行每个查询