我的 Android 应用程序包含一个带有 SQLiteOpenHelper
类的 SQLite 数据库来帮助管理它。在应用程序使用过程中,用户可能会对数据库进行一些操作,例如添加/删除/更新等。
有时会知道操作的大小,如下所示:
- 用户点击按钮保存项目
SQLiteDatabase
执行单个insert
查询- 用户继续使用应用
在应用程序的其他区域,操作可能很大,比如一次将 10 多个项目全部插入数据库。
问题:
- 我应该线程简单的操作,如插入/更新/删除/查看 1 个项目?
- 将 1 个项目插入包含许多项目(例如 30 多个项目)的表中是否需要比插入没有项目的表中更长的时间?
- 如果我不需要线程这些简单的操作,你建议我在什么时候开始线程?
当我说 线程 时,我的意思是使用不是主 UI 线程的线程。
编辑:我意识到小型操作不需要太多时间,我可以很好地在主线程上执行它们。我只是担心在主线程上执行它们是不好的做法,并希望得到澄清!
最佳答案
所有事情的一般规则:如果速度足够快,请在主线程上执行。如果没有,请使用工作线程。
除非你有一个大得离谱的数据库,否则单个操作几乎不需要单独的线程。一般来说,数据库设计得很好,但是当然一个非常大的数据库(超过 10,000 行?)会比一个小的数据库慢一些。然而,30 行不算什么。
如果你有很多操作正在进行,比如一堆查询,或者跨越多个表的复杂查询,我会开始线程化。
与所有内容一样 - 分析您的应用,如果速度太慢,请进行优化。如果您的查询时间都不超过 2 毫秒,请不要编写出色的同步 super 重复多核就绪数据库处理程序。
关于android - 我什么时候应该在另一个线程(不是主线程)上执行某些 SQLite 操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5047378/