【Android】Android Window
1,Window和View的关系
View必须依托于Window这个抽象该类存在,通过Window实现View的变化,
Activity的启动过程,View和Window的联系发生在ActivityThread的handleResumeActivity函数中,
通过makeVisible,使得界面对用户可见
|
可以看到,wm在此处才添加mDecor(顶层View)
|
简而言之: Activity ---- Window ---- View
---------------------------------------------------------------------------------------------------------------------------------
2,WindowManager.addView()分析
在Activity中,通过Context可以获取到WindowManager,
val wm: WindowManager = this.getSystemService(Context.WINDOW_SERVICE) as WindowManager
wm提供三种核心方法,即View的add、update、delete,继承ViewManager,
|
而具体实现类是WindowManagerImpl,现在可以先分析下addView方法,注意WindowManager只有一个实现类WindowManagerImpl,
|
委托给WindowManagerGlobal实现,
|
调用ViewRootImpl的setView方法继续该过程,
该方法内部调用requestLayout,进入三大过程,在此不展开分析,
|
最终通过mWindowSession(IWindowSession)完成添加过程,这是一次IPC过程。
|
这样,Session内部通过WindowManagerService来实现了Window的添加。
WindowManagerService会为每个应用保存一个单独的Session。
---------------------------------------------------------------------------------------
3,WindowManager的使用
通过自定义一个Activity来使用wm提供的api,如下所示:
|
---------------------------------------------------------------------------------------
4,Window的创建过程
对于Activity,在其attach()方法中,
|
这里直接创建了一个PhoneWindow,如何设置一系列回调,如下:
|
对于Dialog和Toast,创建过程类似,
比如Dialog的构造函数,
|
【Android】Android Window相关推荐
- 【OkHttp】Android 项目导入 OkHttp ( 配置依赖 | 配置 networkSecurityConfig | 配置 ViewBinding | 代码示例 )
OkHttp 系列文章目录 [OkHttp]OkHttp 简介 ( OkHttp 框架特性 | Http 版本简介 ) [OkHttp]Android 项目导入 OkHttp ( 配置依赖 | 配置 ...
- 【朝花夕拾】Android自定义View篇之(六)Android事件分发机制(中)从源码分析事件分发机制...
前言 转载请注明,转自[https://www.cnblogs.com/andy-songwei/p/11039252.html]谢谢! 在上一篇文章[[朝花夕拾]Android自定义View篇之(五 ...
- 【朝花夕拾】Android自定义View篇之(六)Android事件分发机制(中)从源码分析事件分发逻辑及经常遇到的一些“诡异”现象
前言 转载请注明,转自[https://www.cnblogs.com/andy-songwei/p/11039252.html]谢谢! 在上一篇文章[[朝花夕拾]Android自定义View篇之(五 ...
- 【Android】Android 集成商米内置打印机打印票据
文章目录 [Android]Android 集成商米内置打印机打印票据 1.集成商米打印依赖 2.规范接口接口 3.使用到的相关对象以及工具类 4.MainActivity初始化接口 5.Uniapp ...
- 【Android】Android 集成佳博80打印机打印票据
文章目录 [Android]Android 集成佳博80打印机打印票据 1.集成佳博80打印机依赖 2.规范调用接口 3.使用到的相关对象以及工具类 4.MainActivity初始化接口 5.Uni ...
- 【Android】Android 集成商米钱箱
文章目录 [Android]Android 集成商米钱箱 1.集成商米打印依赖 2.规范调用接口 3.MainActivity初始化接口 4.Uniapp调用方法 技术分享区 [Android]And ...
- 【翻译】Android Support Library Features(二)
原文地址:http://developer.android.com/tools/support-library/features.html 在Android Support Library包中,包含了 ...
- 【朝花夕拾】Android性能篇之(二)Java内存分配
前言 原文:[朝花夕拾]Android性能篇之(二)Java内存分配 在内存方面,相比于C/C++程序员,咱们java系程序员算是比较幸运的,因为对于内存的分配和回收,都交给 ...
- 【译】Android系统简介—— Activity
续上一篇,继续介绍Android系统.上一篇: [译]Android系统简介 本文主要介绍构建Android应用的一些主要概念: Activity Activity是应用程序中一个单独的有UI的页面( ...
- 【Android】Android 设置Activity窗体 不显示标题和全屏显示
[一]Android 设置Activity窗体 不显示标题 android:theme="@android:style/Theme.NoTitleBar" 1 <activi ...
最新文章
- 二维指针删除单向链表
- 机器学习--线性回归、逻辑回归
- SAP为什么并购sybase
- php在数据流(内存)中操纵远程数据
- 定积分在计算机中的应用,计算机模拟定积分的定义
- 体验QQ2011Beta3带来的变化和惊喜
- 数据标注——VoTT的学习笔记
- 大数据技术 - 学习之路(一)
- 袋鼠云数智之旅·上海站|探索“十四五”智慧校园新图景
- 使用TraceView+实际案列实战性能分析 找出android app UI卡顿原因
- 好用的android剪辑软件,最好用的视频剪辑app软件有哪些?自媒体人都在用的六款app软件...
- 《上海悠悠接口自动化平台》-3.流程性用例,有关联的接口如何写?
- java pgm_用Java读取pgm文件
- 最全的100个Python精选库,建议收藏!
- 论文阅读《Direct Sparse Odometry》2
- FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。: 'D:/tjn/tra
- 诺贝尔物理奖候选人张首晟:区块链技术是互联网世界新的分合转折点
- 【陈工笔记】# latex中如何将图片并排处理 #
- How to modify comment and attribute ClearCase
- JS图片灯箱(lightBox)效果基本原理和demo
热门文章
- html5 css3在线工具,HTML5/CSS3开发辅助工具(TopStyle)
- 家里装电线时,为啥说“走顶”比“走地”好
- java 线程与线程池详解
- 全美航班停飞原因曝光/ 米哈游辟谣年终奖108薪/ 苹果正开发触摸屏Mac…今日更多新鲜事在此...
- bedgraph文件转bigwig文件
- 计算机处理器的CPU主频与指令条数
- unity给定两个点和中间点的其中一个坐标比如z坐标,求该点的坐标
- Axure9的使用经验分享:如何高效的实现弹窗交互模型
- B. Luxurious Houses
- 酷狗音乐能拉进计算机里面吗,手机上的酷狗音乐怎么传到电脑上|苹果手机酷狗音乐怎么传到电脑上|酷狗音乐电脑和手机怎么同步...