Context 作为 Android 开发中的核心组件,提供了获取系统服务和应用资源的桥梁。

获取系统服务

通过 getSystemService(String name) 方法,开发者能够轻松访问各种系统服务。其内部机制是根据服务名在 SYSTEM_SERVICE_MAP 哈希表中查找对应的服务实例。

SYSTEM_SERVICE_MAP 是一个静态哈希表,在系统初始化阶段, registerService 函数会将常用的系统服务,例如网络连接 (connectivity)、闹钟 (alarm)、蓝牙 (bluetooth) 等注册到该表中。

例如,获取网络连接服务的过程如下:

registerService(CONNECTIVITY_SERVICE, new StaticServiceFetcher() {
    public Object createStaticService() {
        IBinder b = ServiceManager.getService(CONNECTIVITY_SERVICE);
        return new ConnectivityManager(IConnectivityManager.Stub.asInterface(b));
    }
});

资源获取

Context 还提供了访问系统资源和应用程序自身资源文件的方法,例如设置壁纸。

设置壁纸

setWallpaper(Bitmap bitmap) 方法为开发者提供了简单的设置壁纸接口,其内部封装了对 WallpaperManager 中接口的调用。