什么时候可以在主线程上使用数据库任务?

时间:2014-05-02 09:29:48

标签: android database multithreading android-asynctask

是否存在可以对主线程上的数据库使用CRUD任务的情况?

而不是创建将在后台线程上处理此类任务的AsyncTask<>类。

这个问题的原因是在这里阅读多个帖子,说明it's sometimes OK to use main thread for the database tasks。我想这意味着估计请求的重要程度,但我也需要澄清。

这是否意味着如果我要在数据库中输入intString值(主要是轻型对象),则不必使用后台线程。

我的长期规则是使用后台线程与数据库的所有交易。

3 个答案:

答案 0 :(得分:2)

那取决于你的运作。如果任何CRUD花费的时间少于2毫秒,那么你可以在主线程中执行它们。它还取决于你的查询有多复杂,因为你说只插入int或String你可以在主线程中执行但是如果有多行同样的事情,我建议你在后台线程上执行它。但是,使用另一个线程执行此类数据库操作始终是一个好习惯,因为在扩展数据库时它会很有用。

答案 1 :(得分:1)

使用AsyncTask进行IO的主要原因是为了提高应用的UI响应能力。如果您的应用程序在不使用AsyncTask的情况下响应充分,那么请继续。如果您的数据库用户将保存大量数据并可能增加访问时间,那么执行此操作可能不是一个好主意。如果您的应用程序附带预先填充的数据库,用户不会放大,那么放弃AsyncTask可能是可以接受的。

答案 2 :(得分:1)

您必须考虑明天可以更改数据库的情况。在这种情况下,当您的代码调用getWriteableDatabase()时,Android可以调用onUpdate()并且操作可能非常长。因此,为了确保未来的实施不会破坏您的应用,您应该更喜欢使用AsyncTask。