WMS中Binder案例

2023-11-10

android12-release


1、FWK层中AIDL形式

Android 接口定义语言 (AIDL)Android 应用层 到 HAL 层

AIDL形式是Android中binder机制的具体实现。按照规范aidl/hidl文件自动生成相应代码文件:
客户端获取proxy:asInterface(android.os.IBinder obj)
服务端实现Stub:class Stub extends android.os.Binder

1.1 服务端实现Stub

WindowManagerService继承IWindowManager.Stub,SystemServer.java中服务初始化添加到ServiceManager中

frameworks/base/services/java/com/android/server/SystemServer.java
在这里插入图片描述

frameworks/base/services/core/java/com/android/server/wm/WindowManagerService.java
在这里插入图片描述

frameworks/base/core/java/android/view/IWindowManager.aidl

1.2 客户端获取proxy

  • 应用端获取服务getSystemService(Context.INPUT_SERVICE)),这里通过中getWindowManagerService()方法操作IWindowManager.Stub.asInterface(ServiceManager.getService("window"))
  • 直接获取IWindowManager.Stub.asInterface(ServiceManager.getService(Context.WINDOW_SERVICE))

frameworks/base/core/java/android/app/SystemServiceRegistry.java

registerService(Context.WINDOW_SERVICE, WindowManager.class,
        new CachedServiceFetcher<WindowManager>() {
    @Override
    public WindowManager createService(ContextImpl ctx) {
        return new WindowManagerImpl(ctx);
    }});

frameworks/base/core/java/android/view/WindowManagerGlobal.java

@UnsupportedAppUsage
public static IWindowManager getWindowManagerService() {
    synchronized (WindowManagerGlobal.class) {
        if (sWindowManagerService == null) {
            sWindowManagerService = IWindowManager.Stub.asInterface(
                    ServiceManager.getService("window"));
            try {
                if (sWindowManagerService != null) {
                    ValueAnimator.setDurationScale(
                            sWindowManagerService.getCurrentAnimatorScale());
                    sUseBLASTAdapter = sWindowManagerService.useBLAST();
                }
            } catch (RemoteException e) {
                throw e.rethrowFromSystemServer();
            }
        }
        return sWindowManagerService;
    }
}

2、紧密相关SurfaceFlinger

SurfaceFlinger中Binder案例

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WMS中Binder案例 的相关文章

  • 不同 Android 设备上 box2D 中出现奇怪的“口吃”

    我正在用 C 同时开发引擎和游戏 并使用 box2D 作为物理后端 我正在不同的 Android 设备上进行测试 在三分之二的设备上 游戏运行良好 物理效果也很好 然而 在我的 Galaxy Tab 10 1 上 我偶尔会遇到某种 口吃 的
  • Android向后兼容技术

    我现在在开发基于最新 API 15 ICS 的 15 项活动 Android 应用程序方面取得了进展 现在我发现应用程序的主要功能主义者即使支持 android v4 也不向后兼容 例如 1 fragment事务动画 2 将StringSe
  • 导航组件参数默认值

    在导航组件中 将参数从第一个片段发送到第二个片段时 默认值不会从导航图中获取哪个集合 这是我的代码 导航图 xml
  • 有没有办法将搜索栏添加到我的实际首选项屏幕?

    我一直看到有关添加您自己的搜索栏首选项的教程 但它不在我实际的 prefs xml 中 有什么方法可以在我的主偏好设置屏幕中添加一个 或者我必须将其分开 Google 似乎有 2 个滑块首选项 搜索栏首选项 https github com
  • 编译后从字节代码中删除注释

    我们正在使用一个包含使用 JAXB 注释进行注释的 bean 的库 我们使用这些类的方式完全不依赖于 JAXB 换句话说 我们不需要 JAXB 也不依赖注释 但是 由于注释存在 它们最终会被处理注释的其他类引用 这要求我将 JAXB 捆绑到
  • Android Facebook sdk 3.5 分享对话框

    您好 我正在为 android sdk 3 5 实现 facebook 共享对话框 但是我按照指南没有取得任何成功 FacebookDialog shareDialog new FacebookDialog ShareDialogBuild
  • Android 5.0 Lollipop 中屏幕固定关闭时如何收到通知?

    我有一个在后台运行的应用程序 并在手机上发生特定事件时启动活动 我发现在 Android 5 0 中 当用户使用另一个应用程序打开屏幕固定时 startActivity intent 调用将被完全忽略 我的应用程序不知道该活动尚未启动 因此
  • ListView:防止视图回收

    我有一个使用回收视图的 ListView 我试图阻止视图被回收 所以我使用 setHasTransientState android support v4 view ViewCompatJB setHasTransientState Vie
  • 使用 RxJava 限制吞吐量

    我现在遇到的情况很难解释 所以我会写一个更简单的版本来解释这个问题 我有一个Observable from 它发出一系列由ArrayList文件数量 所有这些文件都应上传到服务器 为此 我有一个函数可以完成这项工作并返回一个Observab
  • 将图像保存到内部存储器并将出现在图库中

    我搜索了很多与我的问题相关的问题 是否有办法将图像存储在内存中并且它也应该出现在图库中 这是完全有可能的 我以前也这么做过 在将图像保存到内存 或称为应用程序文件夹等 之前 您最好设置Context MODE WORLDREADABLE 虽
  • 我应该选择的最低 SDK 版本是多少? (截至2018年11月)

    据我所知 android studio 中默认的最小 SDK 设置是 15 我读到我应该增加它 因为没有多少人 或者可能没有 仍在使用该 android 版本 另外 我计划使用 android studio 中的一些新功能 这些功能仅适用于
  • 收到“无法解析上传的APK的AndroidManifest.xml。它是否正确编译?”启用 Google 应用签名后出现错误

    启用后谷歌应用程序签名 https support google com googleplay android developer answer 7384423 hl en 每次我尝试将签名版本 APK 上传到 Play 商店时 都会收到一
  • 如何知道用户是否在 Android 应用程序中输入了错误的密码(锁定屏幕)

    我正在开发一个 Android 应用程序 如果用户在 Android 锁定屏幕中输入错误的密码 则必须完成其中一项活动 例如 如果用户输入错误的密码 则会发送电子邮件 我将不胜感激任何帮助 提前致谢 Kshitij 锁屏在完全沙箱环境中运行
  • 截图显示黑色

    我正在拍摄快照并创建缩略图 然后共享此图像 但缩略图显示全黑 我使用了以下代码 Bitmap bitmap View v1 v getRootView v1 setDrawingCacheEnabled true bitmap Bitmap
  • 如何更改 Android 12 启动屏幕中的图标形状?

    我想要矩形形状的启动屏幕图标 而不是 android 12 中的圆形形状 我不相信你可以 如果你看这里的第 3 点 https developer android com about versions 12 features splash
  • 从Android客户端登录appengine

    我正在尝试登录应用程序引擎并访问应用程序引擎中的用户服务API 基本上我希望能够看到谁登录了我的 servlet 我正在使用从 android 获取 authtoken 然后从应用程序引擎获取 ASID 或 SACID cookie 的身份
  • 在片段之间切换时底部导航栏会向下推

    在我的活动中 我有一个底部导航栏和框架布局来显示片段 一切正常 但问题是当我开始按顺序从 1 4 移动时 底部导航栏保持在其位置 但当我突然从 4 跳到2 然后底部导航栏就会超出屏幕 当再次单击同一项目时 它就会回到正常位置 该视频将清楚地
  • Android复杂布局线性和相对

    I have to implement a layout like shown in the diagram and I do not know the best combination to achieve the required de
  • 使用 RecyclerView.Adapter 在 onBindViewHolder() 内设置 onItemClickListener

    我有一个自定义对象 学生班 public class Student private String name private String age public String getName return name public void
  • 如何检查设备上是否安装了文本转语音 (TTS) 的特定语言数据?

    我正在创建一个使用文本转语音的应用程序 我希望用户能够离线使用它 因此我检查设备上是否安装了 TTS 数据 以下是执行此操作的代码 Check tts data is installed Intent checkTTSIntent new

随机推荐

  • el-upload自定义上传文件显示进度条

    el upload自定义上传文件时需要显示进度条 但使用http request会覆盖默认的上传行为 on progress也就不生效了 所以可以自定义上传的实现 效果图 功能实现 按钮
  • 微信小程序根据经纬度查看地图

    var longitude 101 234567 var latitude 202 123456 wx openLocation longitude Number longitude 经度或纬度必须是number类型 latitude Nu
  • linux关闭防火墙和打开防火墙

    永久打开或则关闭 chkconfig iptables on chkconfig iptables off 即时生效 重启后还原 service iptables start service iptables stop
  • XXX.axf: Error: L6218E: Undefined symbol xxx (referred from xxxx.o).

    MKD 报错 linking LCD axf Error L6218E Undefined symbol EnZK referred from ht128x64 o LCD axf Error L6218E Undefined symbol
  • 【shell】 =~的使用

    如下 read p need compile OEM installatoin package yes no IS OEM if z IS OEM then IS OEM No fi if Yes IS OEM yes IS OEM the
  • win10配置 tesseract 中文字符识别

    下载win10下的tesseract的安装包 https digi bib uni mannheim de tesseract 下载后双击进行安装 这里因为我们要识别中文字符 所以在安装界面中需要进行额外的语言勾选 展开Additional
  • centos7清理yum源

    1 删除起始的源 cd etc yum repos d rm f echo delete error 2 卸载yum rpm qa grep yum xargs I rpm e nodeps 3 下载最新的yum程序的rpm包 http m
  • 【HTML】不来看看HTML5的WebStorage吗

    HTML 不来看看HTML5的WebStorage吗 面试官 讲讲sessionStorage和localStorage的区别 回答 en 一个有限制 一个无 技术选型 做一个离线数据的缓存 回答 好像都能实现 随便用 引言 内容速递 看了
  • eval(function(p,a,c,k,e,d){e=function(c)加解密

    1 2 3 4 5 6 7 8
  • 初学STM32之看门狗

    初学STM32之看门狗 一 看门狗概述 1 什么是看门狗 单片机在工作中常常会受到来自外界电磁场的干扰 造成程序跑飞 而陷入死循环 程序的正常运行被打断 使得系统无法正常工作 造成整个系统陷入停滞状态 所以为了对单片运行状态进行实时监测 便
  • HTML <section> 标签

    实例 文档中的区段 解释了 PRC section h1 PRC h1 p The People s Republic of China was born in 1949 p section 定义和用法 section 标签定义文档中的节
  • Difference Between LiDAR and RADAR——LiDAR和RADAR的不同

    Difference Between LiDAR and RADAR 原文连接 https www differencebetween com difference between lidar and vs radar 翻译 RADAR和L
  • ifconfig命令不存在command not found

    ifconfig命令不存在command not found场景 刚刚装linux centos mini 想用远程工具链接 首先得查看一下ip吧 结果发现 ifconfig命令不存在 一个命令不存在 无非两种情况 情况一 不在环境变量中
  • 【云原生

    目录 四 通过 k8s 实现滚动更新 4 3 自定义滚动更新策略 取值范围 建议配置 总结 测试 自定义策略 重建式更新 Recreate 五 生产环境如何实现蓝绿部署 5 1 什么是蓝绿部署 5 2 蓝绿部署的优势和缺点 优点 缺点 5
  • 高精度光照传感器和普及型光照传感器的参数对比

    高精度光照传感器的技术参数 测量范围 0 200000lux 光谱范围 400 750nm 测量精度 2 分辨率 1lux 信号输出 电压型 供电电压 7V 24V DC 输出信号 0 4 2V 光照值 Lux Klux以上输出电压 0 4
  • 转置矩阵(Transpose of a matrix)

    定义 给定一个矩阵 A 将矩阵的行列互换得到的新矩阵称为转置矩阵 记为 转置矩阵的行列式不变 即 转置矩阵由下列动作建立 将 A 的横行写为 的纵列 将 A 的纵列写成 的横行 形式来说 m n 矩阵 A 的转置矩阵是 n m 矩阵 即 例
  • 2023华为OD机试真题【端口合并/贪心算法】

    题目描述 有 M 1 lt M lt 10 个端口组 每个端口组是长度为N 1 lt N lt 100 的整数数组 如果端口组间存在2个及以上不同端口相同 则认为这2个端口组 互相关联 可以合并 第一行输入端口组个数M 再输入M行 每行逗号
  • linux中使用nfs共享文件

    NFS需要使用远程过程调用 RPC 也就是说 我们并不是只要启动NFS 还需要启动RPC这个服务 服务器端 CentOS 7 4 ip 172 16 0 1 共享 tmp目录 共享 data目录给172 16 0 2 安装nfs yum i
  • Android中View绘制流程以及invalidate()等相关方法分析

    转载请注明出处 http blog csdn net qinjuning 前言 本文是我读 Android内核剖析 第13章 View工作原理总结而成的 在此膜拜下作者 同时真挚地向渴望了解 Android 框架层的网友 推荐这本书 希望你
  • WMS中Binder案例

    WMS中Binder案例 1 FWK层中AIDL形式 1 1 服务端实现Stub 1 2 客户端获取proxy 2 紧密相关SurfaceFlinger android12 release 1 FWK层中AIDL形式 Android 接口定