自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

原创 AOSP linux环境配置及其编译方法

linux环境配置,android源码环境搭建

2023-05-02 13:27:57 1670

原创 Android T多屏多显——应用双屏间拖拽移动功能

多屏中移动应用至另一屏本质就是Task的移动。从窗口层级结构的角度来说,就是把Display1中的DefaultTaskDisplayArea上的Task,移动到Display2中的DefaultTaskDisplayArea上

2024-04-12 17:06:26 218

原创 Android T 远程动画显示流程其三——桌面侧动画启动到系统侧结束流程

接着前文分析我们通过IRemoteAnimationRunner跨进程通信从系统进程来到了桌面进程,这里是真正动画播放的逻辑。之后又通过IRemoteAnimationFinishedCallback跨进程通信回到系统进程,处理动画结束时的逻辑。

2024-02-27 15:21:08 821

原创 Android T 远程动画显示流程其二——系统侧动画启动流程

我们以从桌面点击一个应用启动的场景来分析远程动画的系统启动流程

2024-02-21 14:30:48 1331

原创 Android T 远程动画显示流程其一——整体流程以及堆栈介绍

序本地动画和远程动画区别是什么?本地动画:自给自足。对自身SurfaceControl矢量动画进行控制。远程动画:拿来吧你!一个app A对另一个app B通过binder跨进程通信,控制app B的SurfaceControl矢量动画。无论是本地动画还是远程动画,都仅仅只是对SurfaceControl动画图层控制,而无法控制应用内部的View。注:矢量动画包含位移、放大、缩小、透明度、圆角等。常见的远程动画,就是我们从桌面点击一个应用启动这个应用,这个过程中会产生的动画就是远程动画。我们从

2024-01-29 18:52:34 1484

原创 android 常规log的查看与抓取

则对应的代码可以通过 grep 抓取 writeWmxxx 找出是在哪里打印的该events log。events log开头的字段,比如wm_xxx。应用走到onresume生命周期的log。通知cancel的log。

2024-01-17 15:16:45 722

原创 android trace、backtrace文件和火焰图的抓取与查看方法

android trace和backtrace文件的抓取与查看方法

2023-11-27 15:42:58 1307

原创 Android Framework中的addView和addWindow

addView方法是用于将视图添加到布局中的方法,通常用于在应用程序级别的布局中动态添加视图。addWindow方法是用于将窗口添加到窗口管理器中的方法,通常用于创建系统级别的窗口,例如:悬浮窗、对话框、Toast提示等。

2023-11-15 17:59:14 622

原创 Android T 窗口动画(本地动画)显示流程

如何创建一个窗口动画?我们通过先从APP创建一个窗口,以这个窗口的创建过程的窗口动画为例这个demo就是点击BUTTON显示窗口,点击CLOSE WINDOW关闭窗口

2023-11-08 15:43:17 1037

原创 Android T 禁止应用添加窗口的操作

什么情况下会出现我们需要禁止应用添加窗口的情况呢?假如有一个应用的窗口,我们点开后是透明的或者会影响到系统的使用,那么我们就有必要对这个窗口操作一下回顾我们在中所讲的内容禁止应用添加窗口的操作有两种1.直接在客户端对应用禁止添加窗口2.在服务端禁止应用添加窗口。

2023-09-21 16:20:22 299

原创 Android T 窗口层级其三 —— 层级结构树添加窗口

DisplayArea层级结构中的每一个DisplayArea,都包含着一个层级值范围,这个层级值范围表明了这个DisplayArea可以容纳哪些类型的窗口。每种窗口类型,都可以通过WindowManagerPolicy.getWindowLayerFromTypeLw方法,返回一个相应的层级值。尚未添加窗口的层级结构树,如图。这里我们根据上面的代码,以及。的信息简单画出如下树形图。

2023-09-06 20:47:49 1100

原创 Android T 窗口层级其二 —— 层级结构树的构建

如何通过dump中的内容找到对应的代码?我们dump窗口层级发现会有很多信息,这里我们以其中的DefaultTaskDisplayArea为例在源码的framework目录下查找该字符串,找到对应的代码就可以通过打印堆栈或者搜索代码跟踪的方式找到其调用逻辑也就是这一句当然我们上篇文章也讲到了DisplayContent代表的屏幕的DisplayArea层级结构的根节点,我们可以直接从DisplayContent.java的构造方法出发,追踪其流程。

2023-08-10 20:25:03 1396 4

原创 Android T 窗口层级其一 —— 容器类

窗口在App端是以PhoneWindow的形式存在,承载了一个Activity的View层级结构。这里我们探讨一下WMS端窗口的形式。

2023-08-08 21:39:32 1197

原创 Android Notification的使用

常用通知的写法,兼容android 8.0之后的版本。在AndroidManifest.xml中添加权限。

2023-07-31 13:59:06 475

原创 app crash问题系统侧分析方法

framework角度crash类问题分析方法

2023-07-13 18:06:09 514

原创 android 窗口焦点介绍

我们经常会遇到一种的ANR异常,这种异常一般是没有焦点窗口FocusedWindow导致,且这类异常只会发生在,因为是需要找到一个然后再派发,而只需要找到即可。

2023-05-18 17:27:06 4886 7

原创 Android 常见dumpsys方法与黑屏问题分析处理总结

黑屏问题是显示相关的综合性问题,涉及Android应用层、框架层和底层SurfaceFlinger、屏显等多个领域。下面有一些基础的判断来定位黑屏问题的归属:(1) 屏幕没有亮屏、背光为0则需先从power、屏显角度分析(2) 屏幕黑屏,但可以进行三指截屏、power键+音量下键截屏,并且截图正常显示(非黑图),则需先从屏显角度分析(3) 视频类、相机类显示黑屏,需要先确认编解码、阅览显示问题(4) 应用界面局部性黑块,某个控件黑,确认应用的view问题。

2023-05-07 17:26:33 6375 18

原创 Android T Activity启动流程(更新中)

Activity:应用的某个activity入口ActivityManagerService:统筹管理着android的四大组件;统一调度各应用进程ActivityTaskManagerService:Android R新引入,专门用来管理Activity的启动,调度等功能ActivityStarter:专门用于处理activity新启动ActivityStartController:基于工厂设计模式,ActivityStarter的应用启动器。

2023-05-06 00:02:08 511

原创 Android T 窗口点击过滤功能实现

有些应用可能会存在透明窗口,或者界面异常导致当前页面无法触发点击事件,如果要从input侧解决该问题,如何处理?

2023-05-05 14:17:01 309

原创 android input命令模拟事件以及事件注入实现

在坐标(500,100)的位置模拟点击事件参数解析:int inputSource:表示模拟事件的类型float x, float y:表示事件坐标点int displayId:在哪个屏幕上触发事件(一般用于多屏)

2023-05-04 22:32:07 808 2

原创 InputReader流程梳理

对于设备事件,此函数对根据设备的可用性加载或移除设备对应的配置信息。对于原始输入事件,则在进行转译、封装与加工后将结果存储到mQueuedListener中。,这里主要创建InputDevice设备,并根据class给device添加了各种能够支持的Mapper。最后添加到mDevices的Vector容器中。所有事件处理完毕后,调用mQueuedListener.flush()将所有暂存的输入事件一次性地交付给InputDispatcher。方法开始加工数据,否则添加、删除或配置设备,这里以添加为例。

2023-05-03 01:28:29 153

原创 Android T wallpaper相关流程

什么是壁纸?壁纸即是一个壁纸服务,每换一张壁纸 ,就是将该图片写入壁纸文件,再启动一个壁纸服务读取该壁纸文件显示出来的过程。

2023-05-01 00:07:45 835 2

原创 Android 窗口常见参数汇总

Window类中有一个WindowManager.LayoutParams类型的属性mWindowAttributes记录了当前窗口的相关参数

2023-04-29 18:42:32 1678

原创 Android T WMS窗口相关流程

什么是窗口窗口即是屏幕上的一块用于绘制各种UI元素并可以响应用户输入的一个矩形区域。从原理上讲,窗口的概念是独自占有一个Surface实例的显示区域(我们在屏幕上看到的图形都需要绘制在Surface上)。Window是个抽象类其实现类为PhoneWindow。

2023-04-24 23:44:34 4139 15

原创 Android T TaskSnapshot创建和移除流程

添加新的snapshot时,将旧的ActivityRecord移除,CacheEntry会直接被新的覆盖。taskSnapshot的创建流程中,最后一次可见的ActivityRecord与taskId建立映射,所以当且仅当之前建立映射的ActivityRecord被移除时,才会移除缓存。启动应用时prepare过渡动画,应用完成onresume时,execute过渡动画,所以此时可以handle过渡动画。应用的切换场会填充过度动画,task的快照流程的起点被设计在过渡动画的起点。

2023-04-21 00:16:02 1636

原创 Android T startingwindow流程梳理

startingwindow的一些流程梳理

2023-04-18 23:24:04 2325 1

原创 Android开机动画启动到结束流程

介绍Android开机动画相关流程

2023-01-10 23:14:55 1712

原创 Android动态权限获取及其工具类的实现与整合

Android6.0以上,即API 23以上动态权限获取,这里以录音权限为例,其他权限亦可这样动态获取。

2020-01-12 13:52:42 1097 1

原创 Java Web中的Cookie和session

会话技术1. 会话:一次会话中包含多次请求和响应。 * 一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止2. 功能:在一次会话的范围内的多次请求间,共享数据3. 方式: 1. 客户端会话技术:Cookie 2. 服务器端会话技术:SessionCookie1. 概念客户端会话技术,将数据保存到客户端2. 快速入门 *...

2019-11-12 09:04:12 260

原创 MySQL操作汇总

目录一.DDL:操作数据库、表1. 操作数据库:CRUD2.操作表:CRUD二、DML:增删改表中数据1. 添加数据2. 删除数据3. 修改数据三、DQL:查询表中的记录1.语法2. 基础查询3. 条件查询附录:练习例子一.DDL:操作数据库、表1. 操作数据库:CRUD* C(Create):创建--创建数据库:create d...

2019-11-11 12:00:44 174

原创 Vue.js学习与入门(九)Vuex状态管理

为了能让其他组件共享这些数据和方法,可以通过Vuex来统一管理组件状态。首先需要安卓Vuex,在命令端口中,切换到你的Vue项目的路径,然后输入以下命令进行安装。 npm install --save vuex在src目录下,新建一个store目录,并在这个目录下创建一个store.js文件,示例文件内容如下:import Vue from 'vue'import Vu...

2019-11-05 09:11:22 194

原创 Vue.js学习与入门(八)Vue路由

不知道项目如何构建的请参照上一节,Vue.js学习与入门(七)Vue脚手架 https://blog.csdn.net/yimelancholy/article/details/102859239 中,本节以上一节中的vuedemo为例,给创建的vuedemo添加vue-router,输入如下命令:npm install --save vue-router在项目中创建cart.vue和l...

2019-11-04 09:27:04 123

原创 Vue.js学习与入门(七)Vue脚手架

vue-cli是Vue的脚手架工具,它大大降低了webpack的使用难度,支持热更新,有webpack-dev-server的支持,相当于启动了一个请求服务器,搭建了一个测试环境。在使用vue-cli前,确保已经安装了Node.js和NPM。使用vue-cli构建一个项目,首先要创建自己的工作空间,并在命令端口切换至刚刚建好的工作空间,然后安装vue-cli,可以直接在cmd命令端口输入如下命...

2019-11-01 16:03:12 233

原创 Vue.js学习与入门(六)Vue组件

组件需要注册后才能使用,注册分为全局注册和局部注册。全局注册后,所有Vue实例都可以使用该组件。<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <script type="...

2019-11-01 14:59:06 136

原创 Vue.js学习与入门(五)方法和事件

在Vue实例中,可以在methods选项内定义一个方法,通过使用v-on指令监听这个按钮的点击事件,并在触发时调用这个方法。<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> &lt...

2019-11-01 11:49:43 119

原创 Vue.js学习与入门(四)渲染

条件渲染与列表渲染<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>render</title> <script type="text/javascript" src="js/vue.js">&l...

2019-11-01 11:45:40 103

原创 Vue.js学习与入门(三)计算属性

在Vue中的computed选项中,定义了一个计算属性reversedMessage,它提供的函数将作为属性reversedMessage的getter方法,返回变量message反转后的字符串,通过{{resversedMessage}}显示出来。<!DOCTYPE html><html lang="en"><head> <m...

2019-11-01 11:35:02 218

原创 Vue.js学习与入门(二)模板语法

vue模板语法<!DOCTYPE html><html xmlns:v-bind="http://www.w3.org/1999/xhtml" xmlns:v-on="http://www.w3.org/1999/xhtml"><head> <meta charset="utf-8"/> <script type="t...

2019-11-01 11:27:53 94

原创 Vue.js学习与入门(一)第一个Vue应用

首先在vue.js官网上下载vue插件,然后创建第一个Vue应用。<!DOCTYPE html><html> <head> <meta charset="utf-8"/> <script type="text/javascript" src="js/vue.js"></script> </head&g...

2019-11-01 11:15:55 127

原创 基于WebSocket前端开发H.264流实现视频实时播放

基于WebSocket前端开发H.264流实现视频实时播放

2019-10-25 11:10:18 21472 26

android T 应用双屏间拖拽移动功能

基于android T 应用双屏间拖拽移动功能实现

2024-04-15

winscope-u.zip

U版本的winscope,用于抓取图层、窗口等相关信息

2024-03-13

Android 画中画(PIP)Demo

Android 画中画(PIP)Demo

2024-03-11

android版本列表以及其适用机型

android版本列表以及其适用机型

2024-01-15

窗口相关的演示demo

窗口相关的演示demo

2023-11-29

android trace抓取相关文件

android trace抓取相关文件

2023-11-29

winscope-t.zip

winscope-t.zip

2023-10-10

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除