2011-02-06 50 views
2

我有一个应用程序有一段时间运行的IntentService。如果它们都一起运行,那么写入数据库的SQL语句就会彼此绊倒(datbase被锁定的错误)并且正在崩溃应用程序。活动和服务如何同时写入数据库?

活动和服务有没有办法共享相同的数据库连接?

+3

使用内容提供者。 – Falmarri 2011-02-06 11:54:08

+0

使用内容提供者,并确保使用共享的`SQLiteDatabase`。 ContentProviders不是线程安全的;你需要确保锁定发生(即允许`SQLiteDatabase`为你做)。 – 2011-02-06 14:27:46

回答

4
  1. 正如Falmarri所示,您可以使用内容提供者。

  2. 使用标准Java线程同步选项(例如,java.util.concurrent,​​关键字)来同步访问。

  3. 该活动不应写入数据库。该活动应该发送一个IntentIntentService并且有写入数据库。

相关问题