2016-04-27 68 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

相關問題