2

我应该在 contentprovider 的功能上使用 ReadWriteLock 吗?

在 contentprovider 的查询中,我执行 getReadableDatabase,然后检查它是否打开并执行查询。但有时它会在 DatabaseIsClosed 异常上崩溃。这可能是另一个进程执行了一个插入,该插入执行了一个关闭第一个的 getWritebleDatabase。

我正在使用不断查询和插入内容提供者的应用程序和服务。所以看起来 contentprovider 不是线程安全的。

是否有助于使功能同步?

谢谢!

4

1 回答 1

1

在 contentprovider 的查询中,我执行 getReadableDatabase,然后检查它是否打开并执行查询。但有时它会在 DatabaseIsClosed 异常上崩溃。这可能是另一个进程执行了一个插入,该插入执行了一个关闭第一个的 getWritebleDatabase。

您应该在ContentProviderAFAIK 的生命周期内保持数据库打开。

所以看起来 contentprovider 不是线程安全的。

AFAIK, aContentProvider只在一个线程上调用。

ContentProvider主要是一个门面,不提供任何内在的线程安全。

于 2011-09-06T11:32:42.617 回答