Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 提高纺纱机性能_Android_Performance_Spinner - Fatal编程技术网

Android 提高纺纱机性能

Android 提高纺纱机性能,android,performance,spinner,Android,Performance,Spinner,我有12个微调器的工作活动,它们链接到一个包含20000多条记录的数据库表。每个微调器都绑定到不同的查询,以使选择动态(基于先前的选择)。代码可以工作,但由于查询的数量和数据库中表的大小,我的性能很差。加载初始布局需要20秒以上的时间。这是因为在布局过程中,第一个微调器被设置为初始选择,这会导致其他11个微调器也被填充。使用微调器时,性能也会受到影响。如果我要更改第一个选择,所有其他微调器更新大约需要10秒钟 我应该从哪里开始寻找更好的性能?数据库表?询问?或者我应该避免使用12个微调器吗?听起

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


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

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

在这段(1小时)的视频中,有很多有用的表演素材:
有很多选项,你应该考虑下一个钻削列表。这将允许您拆分查询(每个活动一个),并允许当前列表占据整个屏幕。通过这种方式,您还可以为用户提供一种过滤当前列表的方法,如果您有很多选项,这可能是必须的

此外:

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

我想把这两个答案都标记为正确,因为我使用了这两个答案的想法。我确实找到了一种更有效地索引某些列的方法,这很有帮助,而且我不会启用布局上的所有微调器。谢谢