android - 为什么我们应该将 urimatcher 定义保留在内容提供程序的静态花括号中?

标签 android android-contentprovider

我对内容提供者有疑问。
每次我编写内容提供程序时,我都会将 URI MATCHER 定义放在静态括号中,但 URI MATCHER 被声明为该类的私有(private)数据成员。只有 definition(new UriMatcher) 被放在静态括号中。

谁能告诉我原因。我尝试使用谷歌搜索但无法找到答案。我也会尝试,如果有人知道,请告诉我。

感谢和问候,
S苏曼185

最佳答案

这是一个static initialization block . 当您定义一个成员或类变量时,该值必须放在一行中(即使您将它隔开更多),并且它不能包含复杂的逻辑。

对于成员变量,您可以在构造函数中进行这种复杂的初始化。

本质上,静态初始化 block 是类变量的构造函数,允许您在初始化时使用更复杂的表达式。它只执行一次,当第一次加载类时,无论创建了多少个实例。

私有(private)成员只是意味着变量不能被其他类访问,它仍然可以被类本身访问。因此静态初始化 block 只创建一次 URIMatcher(当加载类时),无论有多少个实例。

关于android - 为什么我们应该将 urimatcher 定义保留在内容提供程序的静态花括号中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5935140/

相关文章:

java - Firebase Android ListView 未显示

java - 通过构造函数将上下文从主 Activity 传递到 Java 类时获取 "this field leaks a context object"

android - RxJava 定时器,永远重复,可以随时重启和停止

android - 如何使用短信内容提供商?文档在哪里?

android - 如何共享 ContentProvider 的公共(public) URI

android - 为什么 Content provider 先启动而不是 Launcher activity?

android - 我们如何从 youtube 播放器 api 获取搜索时间?

java - 自定义 ListView 中的空指针异常 View 持有者

java - 安卓 |内容观察者 |内容 URI 不包含资源 ID

android - 安全异常 : Permission Denial: opening provider using FileProvider