在我的 Android 应用程序中,用户可以用导入的数据填充数据库,然后执行预定义的复杂 SQL 查询。对于某些数据模式,查询将花费很长时间(在 HTC Hero 上需要几分钟甚至更多),而通常使用不会超过 10-15 秒。
有什么方法可以取消 Android 上挂起的 SQLite 查询吗?超时也很好,不需要部分结果。我在 AsyncTask.doInBackground()
我知道最好的方法是优化查询或更改应用程序逻辑,但在这种情况下,结果无论如何都取决于用户知识,所以我想帮助那些输入麻烦模式的人。
最佳答案
您无法取消挂起的 sql 查询。它是在 SQLite 引擎中完成的。 SQLite 具有中断查询的 native 方法,但在 Java 接口(interface)中不可访问。
最好的办法是提高查询性能。
读这个:http://www.sqlite.org/cvstrac/wiki?p=PerformanceTuning
您可以通过限制行数将长时间运行的查询划分为更小的查询。然后取消以 block 执行的查询会更容易。
关于Android:如何取消/中断/中断挂起的 SQLite 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3459493/