从Android中的不同线程访问数据库

时间:2011-10-04 21:08:08

标签: android database sqlite

我有一个服务,可以在AsyncTasks中从Internet下载数据。它解析数据并将其存储在数据库中。该服务持续运行。

当服务写入数据库时​​,活动尝试从数据库中读取更改。

我有一个数据库助手,有几种写入和阅读方法。这会引起问题吗?可能试图从两个不同的线程打开数据库?

2 个答案:

答案 0 :(得分:2)

在db中已经讨论过很多关于并发性问题的书。

但是像使用维基百科一样使用stackoverflow我发现了一些有趣的thing

  

Android上的Sqlite允许您从多个procs访问数据库   读取,但如果您目前正在编写一个进程,则读取和   从其他procs写入将抛出异常,因为第一个   write对数据库有一个锁定。

然后数据库受到其他线程的保护坏消息是你必须管理那些异常,如果你有一个大数据库(意味着有很多表有大量的数据交换),那么这可能是一项肮脏的工作。

答案 1 :(得分:2)

只要你只使用SQLiteDatabase的一个实例,你应该没问题。只需确保只在数据库帮助程序中执行db读/写事务,而不执行其他类。使用相同数据库对象进行的任何事务都将自动为您同步。