Android SQLite查询,插入,更新,删除是否始终需要在后台线程上进行? [英] Android SQLite Query, Insert, Update, Delete, Always Need to be On Background Thread?

查看:203
本文介绍了Android SQLite查询,插入,更新,删除是否始终需要在后台线程上进行?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前使用加载程序从ContentProvider抓取数据(以启用游标的自动更新).这种方法对于查询数据库很简单,但是似乎不适用于任何其他数据库操作(例如插入,更新,删除).

I currently use Loaders to grab data from my ContentProvider (to enable auto-updating of my Cursors). This approach is straight-forward for Querying the database, though, it seems ill suited for any other DB operation (such as Insert, Update, Delete).

我的问题是:

  1. 所有SQLite操作是否都需要在后台线程上进行,还是在UI线程上执行诸如插入,更新或删除单行之类的简单操作安全吗?
  2. 什么是确保所有查询都通过后台线程的良好设计模式?我想实现AsyncTask,是否应该创建一个SuperTask来扩展AsyncTask并执行每个SQLite操作? (奖金:您能提供一个简单的例子吗?)

推荐答案

我已经在UI线程上完成了SQLite操作.我想问题实际上就是您的查询是否需要很长时间.我从来没有因为花费太长时间在我的SQLite数据库上执行SQL调用而使应用程序崩溃.

I have done SQLite operations on my UI Thread. I guess the question really becomes whether your queries will ever take a long time or not. I've never had my application crash from taking too long to execute SQL calls on my SQLite database.

话虽如此,如果您打算编写复杂的查询(可能需要一些时间来加载),则希望将其作为AsyncTask或Thread运行,并在需要时使用回调来更新您的UI.

With that said, if you plan on writing complex queries that can take time to load you would want to run it as an AsyncTask or Thread and use callbacks to update your UI if need be.

这是一个关于Android上SQLite的很棒的教程(它还解决了您正在谈论的一些复杂的SQL计时问题): http://www.vogella.com/tutorials/AndroidSQLite/article.html

This is a great tutorial on SQLite on Android (It also addresses some of the complex sql timing issues you were talking about): http://www.vogella.com/tutorials/AndroidSQLite/article.html

这篇关于Android SQLite查询,插入,更新,删除是否始终需要在后台线程上进行?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆