首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >android光标移动到第一性能问题

android光标移动到第一性能问题
EN

Stack Overflow用户
提问于 2011-08-05 08:46:18
回答 3查看 3.9K关注 0票数 3

我正在尝试优化我的应用程序。我注意到cursor.movetofirst()方法以某种方式降低了代码的性能。

代码语言:javascript
复制
Cursor cursor = myDbHelper.getDayInfo(new SimpleDateFormat("yyyy-MM-dd").format(myCalendar.getTime());

上面的行在2.1模拟器中的10 ms中执行,并且

代码语言:javascript
复制
if(cursor != null && cursor.moveToFirst()) 

这一行大约花费了1.6秒。我几乎没查过这件事。有人说,在另一个线程或异步任务中使用它,但这会使代码更加复杂。我只是想弄清楚这个光标到底发生了什么。有人能简化我的问题,或者给出一个关于数据库性能提升的提示吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-05 09:01:58

很自然,moveToFirst()方法比其他代码获得更多的时间。实际发生数据查询,调用数据库通信、数据读取等。你真的不能用它做任何事。这个建议是正确的--把所有长时间的操作都转移到AsyncTask

票数 0
EN

Stack Overflow用户

发布于 2011-11-18 04:34:10

这句话已经有一段时间没有被标记过了,但你在这里从来没有得到过一个很好的答案。即使在一个非常大的表上,单行查询通常也要花费不到1.6秒的时间。之所以速度慢,是因为您没有正在查询的列的索引,因此它必须扫描整个表才能找到这些值。如果创建一个索引,则可以将时间缩短到一秒的一小部分。

票数 2
EN

Stack Overflow用户

发布于 2011-08-05 09:10:45

如果光标持有的数据集很大,则移动游标需要时间。您必须在一个单独的线程上执行这种数据密集型操作。使用AsyncTask可能会使您的代码变得有点复杂,但这是值得的。这是针对以用户体验中断为代价而阻塞的用户线程进行的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6953656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档