2

contentprovider の関数で ReadWriteLock を使用する必要がありますか?

contentprovider のクエリで getReadableDatabase を実行し、開いているかどうかを確認してクエリを実行します。ただし、DatabaseIsClosed 例外でクラッシュすることがあります。これは、最初のプロセスを閉じる getWritebleDatabase を実行する挿入を別のプロセスが実行している可能性があります。

コンテンツプロバイダーに常にクエリと挿入を行うアプリとサービスを使用しています。そのため、コンテンツプロバイダーはスレッドセーフではないようです。

関数を同期化するのに役立ちますか?

ありがとう!

4

1 に答える 1

1

contentprovider のクエリで getReadableDatabase を実行し、開いているかどうかを確認してクエリを実行します。ただし、DatabaseIsClosed 例外でクラッシュすることがあります。これは、最初のプロセスを閉じる getWritebleDatabase を実行する挿入を別のプロセスが実行している可能性があります。

知っている限り、データベースを開いたままにしておく必要がありますContentProvider

そのため、コンテンツプロバイダーはスレッドセーフではないようです。

私の知る限り、 aContentProviderは1つのスレッドでのみ呼び出されます。

ContentProviderほとんどがファサードであり、本質的なスレッドセーフを提供しません。

于 2011-09-06T11:32:42.617 に答える