# Android中显示Dialog判断WindowToken 在Android开发中,我们经常会使用Dialog来展示一些提示信息或交互界面。但是在显示Dialog时,有时会遇到“Unable to add window -- token null is not valid; is your activity running?”这样的错误,这是因为显示Dialog时没有正确的WindowTok
原创 2024-06-01 05:27:37
79阅读
WindowTokenWindowToken 定义和关键变量我们先查看windowtoken类的源码:/** * Container of a set of related
在WindowManagerService中有两种常见的Token,WindowToken,和AppWindowToken。WindowTokenhttp://androidxref.com/6.0.1_r10/xref/frameworks/base/services/core/java/com/android/server/wm/WindowToken.javaclass WindowToke
转载 8月前
54阅读
文章目录前言一、Window创建1.1 创建WindowToken、WindowState1.2 更新WindowToken父节点1.2.1 Window容器简介1.2.2 设置WindowToken父节点1.2.3 更新DisPlayArea.Token子节点的Z信息1.3 更新WindowState父节点1.4 焦点变更二、Window测量2.1 Window测量2.1.1 Window 重
token在创建ActivityRecord的时候一起被创建,他是一个IBinder对象,实现了接口IApplicationToken。token创建后会发送到WMS,在WMS中封装成WindowToken,并存在一个HashMap<IBinder,WindowToken>。token会随着ActivityRecord被发送到本地进程,ActivityThread根据AMS的指令执行A
转载 2023-06-26 11:55:22
104阅读
hi,粉丝朋友大家好! 上几集已经给大家讲解了如何构建出0-36层的层级树及相关源码分析,这节来分析离我们最近的Task/ActivityRecord/WindowToken/WindowState/等是怎么添加到这个层级树里面去的。 标记有颜色的就是我们今天要重点源码分析的,主要分为2个部分:1、Task的加入部分 2、普通的WindowToken加入 因为相对来说ActivityRecord部
转载 10月前
32阅读
看一下WindowState的构造函数:**WindowState.java::WindowState.WindowState()** ``` WindowState(WindowManagerService service, Sessions, IWindow c, WindowToken token, WindowState attachedWindow, int seq, WindowMan
文章目录简介:作用:WMS主要类介绍:W类Window类 \frameworks\base\core\java\android\view\Window.javaWindowManager类ViewRootImpl类WindowState:Session:WindowToken:AppWindowToken:AMS主要类关系图WMS主要类关系图AMS、WMS数据结构关系TaskStackDispl
转载 2024-01-20 22:31:57
208阅读
文章目录序节点添加Task以DefaultTaskDisplayArea为父节点以Task为父节点ActivityRecordWindowTokenWindowState以WindowToken为父节点以ActivityRecord为父节点关于 WindowContainer.addChild 小结调用场景添加差异流程分析添加log堆栈打印流程LauncherStatusBar 序尚未添加窗口的
转载 2024-09-22 08:11:02
6阅读
# 判断Android View是否已销毁 ## 流程 下面是实现“Android View 判断是否已销毁”的流程表格: | 步骤 | 描述 | | ---- | ---- | | 1 | 获取View对象 | | 2 | 判断View是否为空 | | 3 | 判断View的WindowToken是否为空 | | 4 | 判断View是否已经从Window中移除 | ## 代码示例 #
原创 2024-02-28 06:11:50
466阅读
  Android窗口是根据显示屏幕来管理,每个显示屏幕的窗口层级分为37层,0-36层。每层可以放置多个窗口,上层窗口覆盖下面的。   要理解窗口的结构,需要学习下WindowContainer、RootWindowContainer、DisplayContent、TaskDisplayArea、Task、ActivityRecord、WindowToken、WindowState Window
转载 2023-07-31 17:32:28
445阅读
目录介绍1.最简单的创建方法 1.1 Toast构造方法1.2 最简单的创建1.3 简单改造避免重复创建1.4 为何会出现内存泄漏1.5 吐司是系统级别的2.源码分析 2.1 Toast(Context context)构造方法源码分析2.2 show()方法源码分析2.3 mParams.token = windowToken是干什么用的2.4 scheduleTimeoutLo
转载 8月前
23阅读
 介绍 WindowManagerService 简称 WMS ,是系统的核心服务,主要分为四大部分,分别是窗口管理,窗口动画,输入系统中转站和Surface 管理 。WMS 的职责很多,主要的就是下面这几点:窗口管理:WMS是窗口的管理者,负责窗口的启动,添加和删除,另外窗口的大小也时有 WMS 管理的,管理窗口的核心成员有 DisplayContent,WindowToken 和 W
转载 2023-11-14 21:13:42
234阅读
本篇基于AndroidQ代码分析 我们知道Android系统有三种类型窗口,应用窗口,系统窗口,子窗口,无论哪种窗口在WMS都会用一个WindowState来描述,Android窗口Z轴计算以及WindowState排列规则详细介绍了WindowState的排列规则,每个窗口都需要一种token以识别身份,应用窗口对应AppWindowToken,系统窗口对应WindowToken,子窗口对应父窗
转载 2024-01-30 00:30:50
112阅读
目录介绍1.最简单的创建方法1.1Toast构造方法1.2最简单的创建1.3简单改造避免重复创建1.4为何会出现内存泄漏1.5吐司是系统级别的2.源码分析2.1Toast(Contextcontext)构造方法源码分析2.2show()方法源码分析2.3mParams.token=windowToken是干什么用的2.4scheduleTimeoutLocked吐司如何自动销毁的2.5TN类中的消
原创 2018-11-01 17:36:04
2226阅读
# 如何获取Android View在屏幕中的位置 作为一名刚入行的开发者,你可能会遇到需要获取某个View在屏幕中的位置的问题。别担心,我会一步步教你如何实现这个功能。 ## 步骤流程 以下是实现获取View在屏幕中的位置的步骤流程: | 步骤 | 描述 | | --- | --- | | 1 | 获取View的Rect对象 | | 2 | 获取View的WindowToken | |
原创 2024-07-19 08:55:28
82阅读
一、基本概念1、窗口显示架构图多窗口的核心原理其实就是分栈和设置栈边界2、Android的窗口分类Android应用程序窗口,这个是最常见的(拥有自己的WindowToken)譬如:Activity与Dialog Android应用程序子窗口(必须依附到其他非子窗口才能存在,通常这个被依附的窗口类型Activity窗口) 例如:PopupWindow Android系统窗口,其中我们最最常见的就是
转载 2024-08-09 15:25:58
113阅读
1.WMS概述 WMS是系统的其他服务,无论对于应用开发还是Framework开发都是重点的知识,它的职责有很多,主要有以下几点:窗口管理 WMS是窗口的管理者,它负责窗口的启动、添加和删除,另外窗口的大小和层级也是由WMS进行管理的。窗口管理的核心成员有DisplayContent、WindowToken和WindowState。窗口动画 窗口间进行切换时,使用窗口动画可以显得更炫一些,窗口动画
转载 2023-12-26 14:42:40
99阅读
前言前面一篇文章对WMS做了一些简单的介绍,如果您对WMS还没有初步的认知,可以先移步前一篇文章Android WMS工作原理浅析(一)WMS的职责WMS中重要的一些属性释义 从WMS类中包含的属性也可以看出WMS的主要职责,窗口管理、窗口动画以及监听输入进行事件派发。WMS中addWindow源码分析在分析addWindow之前,先了解几个类; ** WindowToken**:WindowTo