ServiceManager.java
来源:互联网 发布:node pm2 静态目录 编辑:程序博客网 时间:2024/06/14 16:57
位置: frameworks/base/core/java/android/os/ServiceManager.java
介绍:framework 核心类,保存所有service的 binder引用,提供service添加和查询接口。
主要接口:
public static void addService(String name, IBinder service) { try { getIServiceManager().addService(name, service, false); } catch (RemoteException e) { Log.e(TAG, "error in addService", e); } }
public static IBinder getService(String name) { try { IBinder service = sCache.get(name); if (service != null) { return service; } else { return getIServiceManager().getService(name); } } catch (RemoteException e) { Log.e(TAG, "error in getService", e); } return null; }
主要使用地方:
1. framework/base/services/java/com/android/server/SystemServer.java
private void startOtherServices() {
...
ServiceManager.addService("scheduling_policy", new SchedulingPolicyService());
ServiceManager.addService("telephony.registry", telephonyRegistry);
ServiceManager.addService("vibrator", vibrator);
ServiceManager.addService(Context.CONSUMER_IR_SERVICE, consumerIr);
ServiceManager.addService(Context.WINDOW_SERVICE, wm);
ServiceManager.addService(Context.INPUT_SERVICE, inputManager);
ServiceManager.addService(Context.ACCESSIBILITY_SERVICE,
new AccessibilityManagerService(context));
ServiceManager.addService(Context.STATUS_BAR_SERVICE, statusBar);
ServiceManager.addService(Context.CLIPBOARD_SERVICE,
new ClipboardService(context));
ServiceManager.addService(Context.NETWORKMANAGEMENT_SERVICE, networkManagement);
ServiceManager.addService(Context.NETWORK_SCORE_SERVICE, networkScore);
ServiceManager.addService(Context.NETWORK_STATS_SERVICE, networkStats);
ServiceManager.addService(Context.NETWORK_POLICY_SERVICE, networkPolicy);
ServiceManager.addService(Context.CONNECTIVITY_SERVICE, connectivity);
ServiceManager.addService(
Context.NSD_SERVICE, serviceDiscovery);
ServiceManager.addService(Context.UPDATE_LOCK_SERVICE,
new UpdateLockService(context));
ServiceManager.addService(Context.LOCATION_SERVICE, location);
ServiceManager.addService(Context.COUNTRY_DETECTOR, countryDetector);
ServiceManager.addService(Context.SEARCH_ENGINE_SERVICE,
new SearchEngineManagerService(context));
ServiceManager.addService(ISensorHubManager.SENSORHUB_SERVICE,
new SensorHubService(context));
ServiceManager.addService(Context.SERIAL_SERVICE, serial);
ServiceManager.addService(Context.HARDWARE_PROPERTIES_SERVICE,
hardwarePropertiesService);
ServiceManager.addService("diskstats", new DiskStatsService(context));
ServiceManager.addService("samplingprofiler",
new SamplingProfilerService(context));
ServiceManager.addService("network_time_update_service", networkTimeUpdater);
ServiceManager.addService("commontime_management", commonTimeMgmtService);
ServiceManager.addService(AssetAtlasService.ASSET_ATLAS_SERVICE, atlas);
ServiceManager.addService(GraphicsStatsService.GRAPHICS_STATS_SERVICE,
new GraphicsStatsService(context));
ServiceManager.addService(Context.MEDIA_ROUTER_SERVICE, mediaRouter);
...
}
private void startBootstrapServices() {
...
// Start the package manager.
traceBeginAndSlog("StartPackageManagerService");
mPackageManagerService = PackageManagerService.main(mSystemContext, installer,
mFactoryTestMode != FactoryTest.FACTORY_TEST_OFF, mOnlyCore);
mFirstBoot = mPackageManagerService.isFirstBoot();
// Set up the Application instance for the system process and get started.
...
mActivityManagerService.setSystemProcess();
...
}
...
2. frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
public void setSystemProcess() { try { ServiceManager.addService(Context.ACTIVITY_SERVICE, this, true); ServiceManager.addService(ProcessStats.SERVICE_NAME, mProcessStats); ServiceManager.addService("meminfo", new MemBinder(this)); ServiceManager.addService("gfxinfo", new GraphicsBinder(this)); ServiceManager.addService("dbinfo", new DbBinder(this)); if (MONITOR_CPU_USAGE) { ServiceManager.addService("cpuinfo", new CpuBinder(this)); } ServiceManager.addService("permission", new PermissionController(this)); ServiceManager.addService("processinfo", new ProcessInfoService(this)); /// M: ANRManager mechanism @{ ServiceManager.addService("anrmanager", mANRManager, true); /// @}........}
3. frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java
public static PackageManagerService main(Context context, Installer installer, boolean factoryTest, boolean onlyCore) { // Self-check for initial settings. PackageManagerServiceCompilerMapping.checkProperties(); PackageManagerService m = new PackageManagerService(context, installer, factoryTest, onlyCore); m.enableSystemUserPackages(); ServiceManager.addService("package", m); return m; }
- ServiceManager.java
- ServiceManager
- ServiceManager
- Java层Binder使用(ServiceManager)
- Java层Binder使用(ServiceManager)
- android binder机制---Java层获取ServiceManager
- Java层的ServiceManager和Native层的ServiceManager的对应过程
- android java.lang.NoClassDefFoundError: org.androidpn.client.ServiceManager
- 为 Android 添加 Java 层服务也就是添加自定义的aidl服务到serviceManager 通过ServiceManager.getService取
- 为 Android 添加 Java 层服务也就是添加自定义的aidl服务到serviceManager 通过ServiceManager.getService取
- ServiceManager & SystemService
- android----ServiceManager
- ServiceManager 学习
- ServiceManager分析
- ServiceManager总结
- killall servicemanager
- ServiceManager 学习
- ServiceManager入门
- Spark学习路线
- oracle误delete或update数据还原(恢复)方法记录
- IDEA spark开发过程中出现cannot resolve symble xx 问题解决方法汇总
- ES6
- Ubuntu14.04下本地仓库项目上传至github远程仓库
- ServiceManager.java
- YOLOV2+window10+cuda8.0+cudnn6.0安装过程
- AndroidShortcuts使用详解
- E-MapReduce上Hive创建基于oss的外部表
- win10x解决安装pywin32-221.win32-py3.5.exe时报错没有发现注册表的方法
- python 拆分日志文件
- 13123
- 解决程序包和运行环境包的一种依赖
- ubuntu 删除anaconda