5

コンテンツ プロバイダーが応答するContentProviderすべてのURI パターン(例: http://developer.android.com/ resources/samples/NotePad/src/com/example/android/notepad/NotePadProvider.html )。APIドキュメントで、、、、および「[すべて]を複数のスレッドから呼び出すことができる」ことに気付いた今日まで、これは問題ないように思えました。さらに、ドキュメントには、スレッドセーフまたは再入可能かどうかについては何も記載されていません。UriMatcher#match(Uri)insertqueryupdatedeleteContentProviderinsertqueryupdatedeleteUriMatchermatch

、、、およびの実装内で使用されるmatchの共有staticインスタンスでの呼び出しの同期について心配する必要がありますか?UriMatcherinsertqueryupdatedelete

4

1 に答える 1

6

のソースをUriMatcher見ると、の実装はスレッドごとの変数(パラメーター)、共有されたs、および(via 、スレッドセーフ)の要素にのみアクセスするため、複数のスレッドがメソッドを同時に呼び出すことができるようです。matchmatchuriStringArrayList<UriMatcher>ArrayList#get(int)

addURIを構造的に変更するため、スレッドセーフではありませんArrayList。から読み取るのと同じArrayListであるため、他のスレッドが呼び出している可能性がある間は呼び出すことができません。matchaddURImatch

于 2010-10-17T18:49:06.423 に答える