前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >[013]临时笔记

[013]临时笔记

作者头像
王小二
发布于 2020-06-08 02:46:46
发布于 2020-06-08 02:46:46
84810
代码可运行
举报
运行总次数:0
代码可运行

前言

有时候看一些知识点的时候,或者解决一些问题的时候,有一些新的,怕以后忘记,就记录在这里。

WMS

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1.正常window创建需要传递IWindow和Binder,系统的window创建不需要传递Binder。
2.正常window创建需要提前用Binder来addwindowtoken,创建WindowToken。形成Binder->WindowToken的绑定关系
3.对于系统的window创建使用IWindow来临时创建WindowToken。也是形成Binder->WindowToken的绑定关系。
4.对于Activity的WindowToken,创建的是AppWindowToken,使用的Binder对象是ActivityRecord中appToken.所以形成了ActivityRecord->创建的是AppWindowToken的关系。
5.一个WindowToken可以包含多个WindowState,常见的就是子窗口使用父窗口的WindowToken。一个WindowState就是一个窗口
6.Display Content代表一块屏幕,addWindowToken中三个重要参数:binder, type, dispalyID,第三个就代表在哪个屏幕。
7.主序和子序只是排序的其中一个依据,还需要WMS根据当前的不同类型数量进行计算。
8.SurfaceView是一个特殊的Window
9.显示的顺序和存储的顺序正常相反,因为数字越大,越靠后,但是越接近用户
10.创建window的重要两步:a.addWindow b.relayoutWindow
11.控件的动画的核心是通过修改ondraw方法,窗口动画的核心是修改surface的transaction.
12.WindowState和WindowStateAnimator相互持有,前者侧重窗口的管理,后者侧重窗口的显示,动画

Binder

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1.Binder的对象设置为null,是否被正常GC和是否持有BinderProxy有关,如果有BinderProxy对象存在,Binder的对象就不会被GC
2.BinderProxy对象可以正常GC,只要自己设置这个对象为null即可
3.一旦Binder对象所在的进程crash,才会触发死亡通知

Binder指令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dumpsys 触发Binder的dump
vnd_service 
service 
cmd 触发Binder的shell

InputANR

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1.input的anr和其他anr的不同
其他的anr:delay一个message,如果无法再规定时间内去remove这个message,这个message就会触发anr。
input的anr:在第一个无法正常分发input事件的时候,写下一个current time+ 5s作为timeout时间,后续input事件分发的时候发现当前的时间大于timeout的时间就会触发anr。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
binder的相关指令都有哪些??能否细嗦一下?
binder的相关指令都有哪些??能否细嗦一下?
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
Android窗口管理分析(2):WindowManagerService窗口管理之Window添加流程
之前分析说过,WindowManagerService只负责窗口管理,并不负责View的绘制跟图层混合,本文就来分析WMS到底是怎么管理窗口的。初接触Android时感觉:Activity似乎就是Google封装好的窗口,APP只要合理的启动新的Activity就打开了新窗口,这样理解没什么不对,Activity确实可以看做一种窗口及View的封装,不过从源码来看,Activity跟Window还是存在不同。本文主要从窗口的添加流程来将APP端、WMS端、SurfaceFlinger端三块串联起来,主要说一
看书的小蜗牛
2018/06/29
3K0
Android窗口管理分析(3):窗口分组及Z-order的确定总结
在Android系统中,窗口是有分组概念的,例如,Activity中弹出的所有PopupWindow会随着Activity的隐藏而隐藏,可以说这些都附属于Actvity的子窗口分组,对于Dialog也同样如此,只不过Dialog与Activity属于同一个分组。之间已经简单介绍了窗口类型划分:应用窗口、子窗口、系统窗口,Activity与Dialog都属于应用窗口,而PopupWindow属于子窗口,Toast、输入法等属于系统窗口。只有应用窗口与系统窗口可以作为父窗口,子窗口不能作为子窗口的父窗口,也就说
看书的小蜗牛
2018/06/29
2.8K0
Android | WMS 解析 (一)
前段时间分析了 Window 的添加、更新和删除流程,也知晓了 Activity 、Dialog 和 Toast 中 Window 的创建过程,今天就接着上篇文章,看一下 WMS 的创建 以及WindowManager 添加 WIndow 后 WMS 是怎样进行操作的。上篇文章点这里直达;
345
2022/11/11
1.6K0
Android | WMS 解析 (一)
Android解析WindowManagerService(二)WMS的重要成员和Window的添加过程
前言 在本系列的上一篇文章中,我们学习了WMS的诞生,WMS被创建后,它的重要的成员有哪些?Window添加过程的WMS部分做了什么呢?这篇文章会给你解答。 1.WMS的重要成员 所谓WMS的重要成员
用户1269200
2018/02/01
1.7K0
Android解析WindowManagerService(二)WMS的重要成员和Window的添加过程
Window源码解析(二):Window的添加机制
注:本文解析的源码基于 API 25,部分内容来自于《Android开发艺术探索》。
俞其荣
2022/07/28
8230
为什么不能使用 Application Context 显示 Dialog?
看到报错信息中的 token ,不知道你还记不记得上篇文章中介绍过的 Activity.attach() 方法:
字节流动
2020/11/30
2K0
为什么不能使用 Application Context 显示 Dialog?
理解WindowManagerService
InputManagerService会对触摸事件进行处理,寻找最合适的窗口来处理触摸反馈信息
用户3112896
2019/09/26
1K0
Android资深岗突围指南:拆解WindowManagerService七大死亡陷阱
作为Android系统中负责窗口管理的核心服务,WindowManagerService(WMS)堪称高级工程师的修罗场。本文将带你直击WMS七大死亡陷阱,用源码级分析+实战案例,助你突破瓶颈。
AntDream
2025/02/18
700
Android资深岗突围指南:拆解WindowManagerService七大死亡陷阱
一篇文章读懂Android Framework
本文旨在将Framework的框架描绘出来,主要是记录我一段时间关于android framework的学习,希望抛砖引玉,对于读者有一定的帮助。
做个快乐的码农
2021/12/22
4.2K0
一篇文章读懂Android Framework
Android之WindowManagerService介绍
Android之WindowManagerService介绍](https://www.jianshu.com/p/a9f66ab8b82e)
李小白是一只喵
2021/04/23
1.1K0
Android之WindowManagerService介绍
剖析Activity、Window、ViewRootImpl和View之间的关系
作者 | 豆沙包67 地址 | https://www.jianshu.com/p/a7596afb1aa1 声明 | 本文是 豆沙包67 原创,已获授权发布,未经原作者允许请勿转载 概念定义 ContextImpl:Context实现类。 PhoneWindow:Window唯一实现类。Window是一个抽象概念,是添加到WindowManager的根容器。 ViewRootImpl:ViewRootImpl是View的根,它控制了View的测量和绘制,同时持有WindowSession通过Binder
用户1269200
2018/02/01
1.6K0
剖析Activity、Window、ViewRootImpl和View之间的关系
android之surfaceview画图
在前文中,我们分析了应用程序窗口连接到WindowManagerService服务的过程。在这个过程中,WindowManagerService服务会为应用程序窗口创建过一个到SurfaceFlinger服务的连接。有了这个连接之后,WindowManagerService服务就可以为应用程序窗口创建绘图表面了,以便可以用来渲染窗口的UI。在本文中,我们就详细分析应用程序窗口的绘图表面的创建过程。         从前面Android应用程序与SurfaceFlinger服务的关系概述和学习计划和Andro
xiangzhihong
2018/01/26
2K0
Android解析WMS之Window删除过程
前言 在本系列文章中,我提到过:Window的操作分为两大部分,一部分是WindowManager处理部分,另一部分是WMS处理部分,Window的删除过程也不例外,本篇文章会介绍Window的删除过程,包括了两大处理部分的内容。 Window的删除过程 和Android解析WindowManagerService(二)WMS的重要成员和Window的添加过程这篇文章中Window的创建和更新过程类似,要删除Window需要先调用WindowManagerImpl的removeView方法,removeVi
用户1269200
2018/03/26
1.5K0
前方高能!这是最新的一波Android大厂面试题汇总,不学则已,一学惊人
面试大厂,那就是考察你技术方向的一些专业技能,如果你面试Android岗位,那 Android 方向的专业技能就是考察很重要的一个方向。
Android技术干货分享
2021/08/25
1.2K0
前方高能!这是最新的一波Android大厂面试题汇总,不学则已,一学惊人
Android 开发艺术探索笔记二
不管是Activity,Dialog还是Toast,它们视图都是附加在window上的,window才是view的直接管理者。
Yif
2019/12/26
1.9K0
金九银十Offer收割机:Android 面试核心知识点精讲,不打没准备的仗!
无他,就是靠自己的毅力以及决心。一天不行,一个月;一个月不行,一年;有决心的人,啥学历、或者资历,那些都是借口。
Android技术干货分享
2021/08/30
8570
金九银十Offer收割机:Android 面试核心知识点精讲,不打没准备的仗!
Android系统服务 WMS与AMS简单理解
AMS和WMS都属于Android中的系统服务,系统服务有很多,它们在Android体系架构中都属于同一层次,
zhangjiqun
2024/12/16
1640
Android老司机被打脸!Dialog 对应的 Context 必须是 Activity吗?
于是有了本文,我负责被打脸,小缘负责解答,我反正不会被打脸第二次了,希望大家也能更清晰的认识这一块。
Android技术干货分享
2021/06/28
4.5K0
Android老司机被打脸!Dialog 对应的 Context 必须是 Activity吗?
Window源码解析(三):Window的更新机制
注:本文解析的源码基于 API 25,部分内容来自于《Android开发艺术探索》。
俞其荣
2022/07/28
8480
Android性能优化(一)
一个应用App的启动速度能够影响用户的首次体验,启动速度较慢(感官上)的应用可能导致用户再次开启App的意图下降,或者卸载放弃该应用程序。
xiangzhihong
2021/01/22
2.7K0
推荐阅读
相关推荐
Android窗口管理分析(2):WindowManagerService窗口管理之Window添加流程
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验