Android中getSystemService的过程
2016-10-09 16:10
197 查看
1、获得一个service
./Telephony/src/com/android/phone/MobileNetworkSettings.javaTelephonyManager tm = (TelephonyManager) getSystemService( Context.TELEPHONY_SERVICE);
./base/core/java/android/content/Context.java 中
/** * Gets the name of the system-level service that is represented by the specified class. * * @param serviceClass The class of the desired service. * @return The service name or null if the class is not a supported system service. */ public abstract String getSystemServiceName(Class<?> serviceClass);
/base/core/java/android/app/ContextImpl.java
@Override public String getSystemServiceName(Class<?> serviceClass) { return SystemServiceRegistry.getSystemServiceName(serviceClass); }
./base/core/java/android/app/SystemServiceRegistry.java
/** * Gets the name of the system-level service that is represented by the specified class. */ public static String getSystemServiceName(Class<?> serviceClass) { return SYSTEM_SERVICE_NAMES.get(serviceClass); }
通过一下方式注册
registerService(Context.TELEPHONY_SERVICE, TelephonyManager.class, new CachedServiceFetcher<TelephonyManager>() { @Override public TelephonyManager createService(ContextImpl ctx) { return new TelephonyManager(ctx.getOuterContext()); }});
/** * Statically registers a system service with the context. * This method must be called during static initialization only. */ private static <T> void registerService(String serviceName, Class<T> serviceClass, ServiceFetcher<T> serviceFetcher) { SYSTEM_SERVICE_NAMES.put(serviceClass, serviceName); SYSTEM_SERVICE_FETCHERS.put(serviceName, serviceFetcher); }
初始化对象
./base/telephony/java/android/telephony/TelephonyManager.java
/** @hide */ public TelephonyManager(Context context) { Context appContext = context.getApplicationContext(); if (appContext != null) { mContext = appContext; } else { mContext = context; } mSubscriptionManager = SubscriptionManager.from(mContext); if (sRegistry == null) { sRegistry = ITelephonyRegistry.Stub.asInterface(ServiceManager.getService( "telephony.registry")); } }
相关文章推荐
- android中LayoutInflater的3种使用以及getSystemService的API
- android中LayoutInflater的3种使用以及getSystemService的API
- getSystemService() in Android
- android中LayoutInflater的3种使用以及getSystemService的API .
- Android中LayoutInflater的3种使用以及getSystemService的API
- Android之getSystemService
- android中getSystemService详解
- android中的系统级服务getSystemService(name)
- Android----getSystemService
- 添加android service并通过getSystemService调用
- Android之getSystemService 各种系统服务总结
- Service---android中getSystemService详解
- android中LayoutInflater的3种使用以及getSystemService的API
- Android getSystemService
- Android的 getSystemService
- Android下getService和getSystemService
- Android getSystemService()
- Android之getSystemService方法实现详解
- Android getSystemService()调用
- Android的getSystemService(String)