gpt4 book ai didi

android - UriMatcher 类的 match(Uri) 是否可重入?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:34:30 25 4
gpt4 key购买 nike

我看到的关于如何制作 ContentProvider 的示例都用过UriMatcher#match(Uri) insertqueryupdatedelete 方法中的方法可以轻松处理所有 URI 模式内容提供商响应(例如:http://developer.android.com/resources/samples/NotePad/src/com/example/android/notepad/NotePadProvider.html)。这对我来说似乎没问题,直到今天,当我在 ContentProvider API 文档中注意到 insertqueryupdatedelete“可以 [全部] 从多个线程调用”。此外,UriMatcher 文档未提及线程安全或match 是否可重入。

我是否需要担心在 UriMatcher 的共享static 实例上同步对 match 的调用,该实例在我的 insert, query, update, delete?

最佳答案

浏览the source of UriMatcher ,似乎多个线程可以调用match方法同时执行因为match只访问每线程变量 uri (参数),共享 String s 和 ArrayList<UriMatcher> 的元素(通过 ArrayList#get(int) ,它是线程安全的)。

addURI 不是线程安全的,因为它在结构上修改了 ArrayList .是一样的ArrayListmatch从中读取,所以 addURI其他线程可能正在调用 match 时无法调用.

关于android - UriMatcher 类的 match(Uri) 是否可重入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3951300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com