Android Framework 之 ServiceManager

这篇具有很好参考价值的文章主要介绍了Android Framework 之 ServiceManager。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Android ServiceManager

ServiceManager 在 Android 系统中扮演了核心的角色。主要负责跨进程通信(IPC)的管理和服务的注册与查找。

管理系统服务ServiceManager 提供一个全局的服务注册表,用于存储所有的系统服务。一个服务一旦被注册到 ServiceManager,其他的进程就可以通过 **ServiceManager **来访问这个服务。

提供服务查找功能:ServiceManager 提供 getService() 和 **checkService() **方法,可以通过服务名称来查找服务。其他进程可以通过这些方法获取到已经注册的服务的引用,然后进行跨进程通信。

负责跨进程通信:ServiceManager 提供 IPC 机制,可以让其他进程通过 Binder 机制来访问已经注册的服务,实现进程间的通信。

启动流程

设备启动:首先,设备启动并运行 bootloader,然后启动 Linux 内核。

启动 init 进程Linux 内核启动后,会启动 init 进程。init 进程是 Android 系统中的第一个进程,负责初始化系统环境,并启动其他的系统服务和进程。

启动 Zygote 进程init 进程会启动一系列的 native daemons,包括 Zygote 进程。Zygote 进程是所有 Android 应用进程的父进程,负责孵化新的应用进程。

启动 SystemServer 进程Zygote 进程会孵化出 SystemServer 进程。SystemServer 进程负责启动和管理系统级服务,包括 ServiceManager。

启动 ServiceManagerSystemServer 进程在启动过程中,会启动 ServiceManager,并将各种系统服务注册到 **ServiceManager **中。

以上就是 ServiceManager 的启动流程。在这个流程中,ServiceManager 是由 SystemServer 进程启动的,然后通过 ServiceManager 来管理和调度所有的系统服务。

核心原理

ServiceManager 是 Android 系统中负责管理所有 Binder 服务的核心部分。它的主要作用是管理和调度系统中所有的 Binder 服务,包括系统服务(如 ActivityManagerServiceWindowManagerService 等)和第三方服务。它提供了一种机制,使得一个进程可以通过 Binder 跨进程调用另一个进程中的服务。

ServiceManager 本身也是一个 Binder 服务,其他服务或应用可以通过它获取系统中已注册的 Binder 服务。

ServiceManager 的启动流程:

启动ServiceManagerSystemServer 进程在启动过程中初始化和启动。在 SystemServercreateSystemContext 方法中,会创建一个 ServiceManager 的实例。

注册服务:在 SystemServer 启动各种系统服务的过程中,这些服务的 Binder 会被注册到 ServiceManager 中,这样其他进程就可以通过 ServiceManager 获取这些服务。

ServiceManager 的工作流程:

注册服务:当一个 Binder 服务启动时,它会调用 ServiceManageraddService 方法将自己注册到 ServiceManager 中。

获取服务:当一个进程需要使用某个 Binder 服务时,它会调用 ServiceManagergetService 方法,ServiceManager 会返回对应的 Binder 对象,这样该进程就可以通过 Binder 调用服务中的方法了。

监听服务:一个进程可以调用 ServiceManageraddServiceListener 方法来监听某个服务的状态,例如监听服务是否已启动。

总的来说,ServiceManager 在 Android 系统中扮演着 “服务的服务” 的角色,它负责管理和调度系统中所有的 Binder 服务,使得进程间的通信和交互成为可能。文章来源地址https://www.toymoban.com/news/detail-622743.html

到了这里,关于Android Framework 之 ServiceManager的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android Framework基础面试篇~

    在Android应用开发面试中,针对Framework的问题是常被考察的。以下是一些常见的Framework金典面试题目及其详解: 1. 什么是Android应用生命周期?你能描述一下它包含哪几个阶段吗? Android应用生命周期指的是应用从启动到关闭的整个过程。 它包括以下四个阶段: onCreate(创建)

    2024年02月10日
    浏览(46)
  • Android Framework 之 SystemServer

    SystemServer是Android系统中的一个核心组件,负责启动和管理许多重要的系统服务。它的启动过程相对复杂,包含以下主要步骤: Zygote启动SystemServer :在Android系统启动过程中,Zygote进程会通过fork操作创建一个新的进程,并在这个新的进程中启动SystemServer。 加载并执行SystemSer

    2024年02月14日
    浏览(36)
  • Android Framework基础知识

    哈喽大家好,我是Zzz. 给大家分享一篇Framework入门的基础知识文章,内容纯纯原创。 一、Application,Activity和进程的关系?     Application、Activity只是进程虚拟机运行的一个类对象,只是属于系统的一个组件和进程没有直接联系。Android支持为每个组件可以单独进程方式运行。

    2024年03月24日
    浏览(38)
  • 【Android Framework (八) 】- Service

    1,挂载文件系统,创建文件目录 调用selinux_setup权限安全相关 2,初始化内存空间 初始化属性服务 创建Epoll 注册监听子进程重启异常操作等,对子进程进行线程守护 3,startPropertyServic 开启属性服务 进行监听 4,LoadBootScripts 加载init.rc文件 进行解析 调用do_class_start 文件开启

    2024年02月01日
    浏览(35)
  • Android Framework 之 启动流程

    Android 系统的启动流程 Android 系统的启动流程可以分为以下几个主要步骤: 引导加载器(Bootloader)启动 :当你打开一个 Android 设备时,首先启动的是引导加载器。引导加载器负责启动 Android 的核心操作系统。 Linux 内核启动 :引导加载器加载并启动 Linux 内核。Linux 内核负责

    2024年02月14日
    浏览(35)
  • Android Framework 之 Zygote

    Android Zygote 是 Android 操作系统中一个关键的系统服务,它在系统启动时加载,为应用程序的运行提供了一种快速且资源高效的方式。 Zygote 的主要作用如下: 预加载共享库和类 :Zygote 启动时,会预先加载 Android 系统中所有应用程序共享的库和类,例如 Android Runtime,标准 Ja

    2024年02月14日
    浏览(35)
  • Android Framework | AOSP源码下载及编译指南(基于Android13)

    AOSP(Android Open Source Project)是Android操作系统的开源项目,通过下载和编译AOSP源码,您可以获得原始的Android系统,并进行定制和开发。本教程将向您介绍如何下载AOSP源码并进行编译的步骤。 如何只是浏览查看AOSP源码,则没必要下载源码,可以使用google提供的Code Search工具进

    2024年01月16日
    浏览(54)
  • Android Framework 全局替换系统字体

    基于Android 11 Android Framework 全局替换系统字体 将需要替换的字体资源放置frameworks/base/data/fonts/目录下。 将系统默认的Roboto字体替换为HarmonyOs字体。 frameworks/base/data/fonts/fonts.xml frameworks/base/data/fonts/Android.mk frameworks/base/data/fonts/fonts.mk 编译刷机验证。 frameworks/base/graphics/java/and

    2024年02月12日
    浏览(37)
  • Android Framework——Binder 监控方案

    作者:低性能JsonCodec 在 Android 应用开发中,Binder 可以说是使用最为普遍的 IPC 机制了。我们考虑监控 Binder 这一 IPC 机制,一般是出于以下两个目的: 卡顿优化:IPC 流程完整链路较长,且依赖于其他进程,耗时不可控,而 Binder 调用本身通常又是以 RPC 形式对外提供能力的,

    2024年02月04日
    浏览(35)
  • Android Framework分析SystemServer进程

    SystemServer进程是Android系统的核心进程,运行在Android系统启动后,负责管理和加载系统服务。本文将介绍SystemServer进程的详细结构和工作原理,并使用代码注释的方式阐述其关键部分代码。 结构: SystemServer进程的核心是SystemServer类,它是Android系统启动后的第一个Java进程。

    2024年02月09日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包