2016-04-27 64 views

回答

1

我想知道的是为什么它不是ContentResolver类的一部分?

你不能有getContentResolver()作为实例方法上ContentResolver,因为你在一个圆形的局面(你将如何得到该ContentResolver调用getContentResolver())清盘。

他们本可以在ContentResolver上实施名为getContentResolver(Context)static方法。他们选择不这样做。问“为什么?”关于不遵循堆栈溢出的人在十年前做出的实施决策是不切实际的。

为什么getContentResolver()需要一个上下文?

在幕后,很多东西ContentResolver不涉及IPC与ContentProvider的过程。这反过来,需要一个Context,如绑定的东西。 Context也用于获得PackageManager

+0

我理解第一部分,所以ContenResolver需要一个上下文是因为Android系统需要告诉内容提供者知道哪个实例正在调用,以便内容提供者可以提供适当的内容对象给内容解析器。对 ? –

+0

@Codester:或多或少。同样,具有“ContentResolver”的代码和具有“ContentProvider”的代码通常在两个独立的应用程序中,或者是应用程序和操作系统的核心位。所有这些进程间通信(IPC)都通过一种被称为Binder的技术来实现。而且,无论出于何种原因,与Binder一起工作都被捆绑成一个“背景”。这一部分我不能很好解释,因为它比我通常漫步的Android更深入。 – CommonsWare

相关问题