参考文章http://www.robinheztto.com/2016/12/20/android-systemservice/

文件位置:frameworks/base/services/core/java/com/android/server/SystemService.java

此类中所有生命周期的方法都是在SystemServer主线程中被调用

public abstract class SystemService {  /**   * 创建ActivityManagerService,PowerManagerService,LightsService,   * DisplayManagerService之后,PackageManagerService之前.   */    public static final int PHASE_WAIT_FOR_DEFAULT_DISPLAY = 100;  /**   * 创建PackageManagerService,WindowManagerService等等诸多服务.   */  public static final int PHASE_LOCK_SETTINGS_READY = 480;  /**   * PHASE_LOCK_SETTINGS_READY到PHASE_SYSTEM_SERVICES_READY之间无任何操作,PHASE_SYSTEM_SERVICES_READY之后,   * 系统服务(例如PowerManager,PackageManager等等)能够被调用.   */  public static final int PHASE_SYSTEM_SERVICES_READY = 500;  /**   * ActivityManagerService ready.   */  public static final int PHASE_ACTIVITY_MANAGER_READY = 550;  /**   * 启动SystemUI,Watchdog,services能够start/bind三方应用,App能够通过Binder调用系统服务.   */  public static final int PHASE_THIRD_PARTY_APPS_CAN_START = 600;  /**   * 启动完成,系统服务执行PHASE_BOOT_COMPLETED回调比注册ACTION_BOOT_COMPLETED广播能减低延迟.   */  public static final int PHASE_BOOT_COMPLETED = 1000;}//部分方法注释/** * 构造方法,初始化system server context. * * @param context The system server context. */public SystemService(Context context) {    mContext = context;}/** * 获取system context. */public final Context getContext() {    return mContext;}/** * 是否是安全模式. */public final boolean isSafeMode() {    return getManager().isSafeMode();}/** * 在构造方法后调用. */public abstract void onStart();/** * 不同BootPhase阶段的回调. */public void onBootPhase(int phase) {}....../** * Publish the service到ServiceManager,对其他进程提供binder服务. */protected final void publishBinderService(String name, IBinder service) {    publishBinderService(name, service, false);}/** * Publish the service到ServiceManager,对其他进程提供binder服务. */protected final void publishBinderService(String name, IBinder service,        boolean allowIsolated) {    ServiceManager.addService(name, service, allowIsolated);}/** * 通过服务名获取binder服务. */protected final IBinder getBinderService(String name) {    return ServiceManager.getService(name);}/** * Publish service到LocalServices,以供SystemServer进程中的其他服务调用. */protected final  void publishLocalService(Class type, T service) {    LocalServices.addService(type, service);}/** * 通过Class Type从LocalServices中获取服务. */protected final  T getLocalService(Class type) {    return LocalServices.getService(type);}/** * 从LocalServices中获取SystemServiceManager(SystemServiceManager也被注册到了从LocalServices). */private SystemServiceManager getManager() {    return LocalServices.getService(SystemServiceManager.class);}

更多相关文章

  1. Android源码解析
  2. Android实现使用流媒体播放远程mp3文件的方法
  3. Android开发 System.out.println(); 控制台输出方法
  4. Android简单判断某个APK是否已经安装的方法
  5. Android(安卓)的属性分析
  6. Flutter跟Android交互
  7. SimpleAdapter
  8. android系统颜色大全
  9. Android(安卓)Log 日志系统

随机推荐

  1. Android多线程下载远程图片
  2. Android手机访问Django测试服务器方法
  3. Android工程中R.java文件的重新生成——(
  4. [置顶] Android(安卓)中轴时光轴
  5. Android 单元测试(四) 之AndroidJUnitRun
  6. Android 木马应用程序大名单
  7. 如何在Eclipse中配置已经存在到Android S
  8. 轻松彻底清晰Android(安卓)Activity生命
  9. cocos2d-2.0-x-2.0.3多平台环境搭建(andro
  10. Android(安卓)Init进程分析