方法getContentResolver()
是Context
类的一部分,我想知道的是为什么它不是ContentResolver
类的一部分?为什么getContenResolver()方法是Context类的一部分?
为什么getContentResolver()
需要上下文?
方法getContentResolver()
是Context
类的一部分,我想知道的是为什么它不是ContentResolver
类的一部分?为什么getContenResolver()方法是Context类的一部分?
为什么getContentResolver()
需要上下文?
我想知道的是为什么它不是ContentResolver类的一部分?
你不能有getContentResolver()
作为实例方法上ContentResolver
,因为你在一个圆形的局面(你将如何得到该ContentResolver
调用getContentResolver()
)清盘。
他们本可以在ContentResolver
上实施名为getContentResolver(Context)
的static
方法。他们选择不这样做。问“为什么?”关于不遵循堆栈溢出的人在十年前做出的实施决策是不切实际的。
为什么getContentResolver()需要一个上下文?
在幕后,很多东西ContentResolver
不涉及IPC与ContentProvider
的过程。这反过来,需要一个Context
,如绑定的东西。 Context
也用于获得PackageManager
。
我理解第一部分,所以ContenResolver需要一个上下文是因为Android系统需要告诉内容提供者知道哪个实例正在调用,以便内容提供者可以提供适当的内容对象给内容解析器。对 ? –
@Codester:或多或少。同样,具有“ContentResolver”的代码和具有“ContentProvider”的代码通常在两个独立的应用程序中,或者是应用程序和操作系统的核心位。所有这些进程间通信(IPC)都通过一种被称为Binder的技术来实现。而且,无论出于何种原因,与Binder一起工作都被捆绑成一个“背景”。这一部分我不能很好解释,因为它比我通常漫步的Android更深入。 – CommonsWare