通过 Resource class 访问应用程序资源是否与通过上下文访问相同?

Is accessing application resources via the Resource class same as accessing via the context?

在编写代码时,我发现我可以通过在 context

上调用 getString() 函数来访问字符串资源
val string = context.getString(...)

context.resources

val string = context.resources.getString(...)

哪种方法正确?为什么是这两种方式?

Which is the right way to do it?

两者都可以。 getString()的实现是:

    @NonNull
    public final String getString(@StringRes int resId) {
        return getResources().getString(resId);
    }

(来自 the source code

所以,他们都做同样的事情。

Why the two ways?

getString()用得很多。据推测,他们向 Context 添加了一个辅助方法以简化对字符串资源的访问。然而,虽然他们对几种资源类型这样做,但许多其他资源类型只能通过完整的 Resources 对象获得。