是否存在可以对主线程上的数据库使用CRUD任务的情况?
而不是创建将在后台线程上处理此类任务的AsyncTask<>
类。
这个问题的原因是在这里阅读多个帖子,说明it's sometimes OK to use main thread for the database tasks
。我想这意味着估计请求的重要程度,但我也需要澄清。
这是否意味着如果我要在数据库中输入int
或String
值(主要是轻型对象),则不必使用后台线程。
我的长期规则是使用后台线程与数据库的所有交易。
答案 0 :(得分:2)
那取决于你的运作。如果任何CRUD花费的时间少于2毫秒,那么你可以在主线程中执行它们。它还取决于你的查询有多复杂,因为你说只插入int或String你可以在主线程中执行但是如果有多行同样的事情,我建议你在后台线程上执行它。但是,使用另一个线程执行此类数据库操作始终是一个好习惯,因为在扩展数据库时它会很有用。
答案 1 :(得分:1)
使用AsyncTask进行IO的主要原因是为了提高应用的UI响应能力。如果您的应用程序在不使用AsyncTask的情况下响应充分,那么请继续。如果您的数据库用户将保存大量数据并可能增加访问时间,那么执行此操作可能不是一个好主意。如果您的应用程序附带预先填充的数据库,用户不会放大,那么放弃AsyncTask可能是可以接受的。
答案 2 :(得分:1)
您必须考虑明天可以更改数据库的情况。在这种情况下,当您的代码调用getWriteableDatabase()时,Android可以调用onUpdate()并且操作可能非常长。因此,为了确保未来的实施不会破坏您的应用,您应该更喜欢使用AsyncTask。