为什么AsyncTask中的rawQuery要慢得多?

时间:2013-03-05 12:52:32

标签: android sqlite android-asynctask

以下是这种情况: 在我的应用程序中,我有用于与其他特殊设备通信的服务。在这个通信的中间,我需要在我的应用程序中查询数据库以获取必要的数据以继续与第二个设备进行通信。这里我使用带有2个参数的rawQuery。查询是一个不太复杂的原因我实际上是在数据库中查询视图。因此,我应该回到 50行 25列

问题是,如果我只是从服务(同一个线程)调用此查询,它会阻止我的用户界面 6秒。有动画信号长操作卡住了。

另一方面,如果我在AsyncTask的doInBackground中调用完全相同的查询(从UI线程移动它)我的动画流动没有麻烦但是对于相同数量的数据查询现在需要 25秒直到 1分钟取决于我正在测试的手机..(几乎1分钟采用新的摩托罗拉与英特尔CPU)

我测量时间和丢失的时间(导致查询和数据库在两部手机上完全相同),并且在第一次访问光标时浪费了所有这些时间。在我的情况下c.moveToFirst()..

我的问题是更多面向Android而不是SQL,因为在我的应用程序中我整合已经完整,填充数据,数据库

任何想法,任何人?

编辑:我为我遇到的问题尝试了不同的解决方案,这里有趣的事情我来了:当我使用另一个带有查询的Runnable线程时,时间缩短回几秒钟(完全像一切都在UI线程中执行) 线程t =新线程(RunnableWhichHoldQuery); //然后我只是启动线程t。

仍然不确定为什么AsyncTask表现得像它一样..现在我只是好奇解释因为我想更好地了解发生了什么...感谢每个有想法的人..

0 个答案:

没有答案