自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 资源 (4)
  • 收藏
  • 关注

原创 android 中的context

1234567891011/***/......Context提供了关于应用环境全局信息的接口。它是一个抽象类,它的执行被Android系统所提供。它允许获取以应用为特征的资源和类型,是一个统领一些资源(应用程序环境变量等)的上下文该类实现了Context类的所有功能。= null) {............6.Context个数。

2024-04-26 10:45:00 590

原创 Android 13 Layer数据结构

Transform.mat33 的值由position和 matrix组成,由Layer 中的setMatirx和setPosition赋值。// dsdx(x的缩放) dtdy 0。// dtdx dsdy(y的缩放) 0。// tx(x的位置偏移) ty (y的位置偏移) 1。skewX: x轴的斜交因子(错切因子)scaleX: x轴的缩放因子。scaleY: y轴的缩放因子。skewY: y轴的斜交因子。

2024-04-25 09:45:00 560

原创 Android 14 transtion 动画流程

implements Transitions.TransitionHandler 的对象都会调用到startAnimation。根据上步计算出来的sortedTargets计算要做的动画TransitionInfo。此列表在开始做动画时候会判断里面的key,value是否满足做动画的条件。将符合条件的changeInfo添加到targets 返回。计算所有的到mChanges。

2024-04-24 15:15:43 1595 1

原创 Android 12 Starting window的添加与移除

其中调用到StartingSurfaceDrawer.addSplashScreenStartingWindow。然后调用到系统的WindwmanagerService的addView,执行添加窗口的流程。函数初计算了startingwindow的各种屏幕参数params,然后根据参数addWindow。

2024-04-24 15:04:17 319 2

原创 Android配置环境

执行命令:sudo mv /home/用户名/Downloads/android-sdk-linux /usr/java。sudo mv /home/用户名/Downloads/jdk1.8.0_271 /usr/java。执行命令:/usr/java/android-sdk-linux/tools/android。执行命令:tar -zxvf android-sdk-linux.tgz。执行 source /etc/profile。验证是否安装成功(我验证是成功的)执行:java -version。

2024-04-24 14:54:57 396 3

原创 Win & linux 下配置adb & fastboot

从8350开始,userdata增加了几个mount 选项,例如K2,fastboot -w可能会导致文件系统异常,进而出问题,可以使用。我的目录结构是在用户名下的adb_fastboot_linux下面,可根据需要设定。主机:Win10,除了adb fastboot需要设置变量之外,驱动直接安装即可。主机:Win10,除了adb fastboot需要设置变量之外,驱动直接安装即可。增加部分如红色部分,注意尾部是冒号不是分号,你们只需要添加 红色部分即可,例如我放在D盘adb_fastboot_win下。

2024-04-24 14:49:04 1211

原创 jadx反编译apk

jadx是一款反编译利器,同时支持命令行和图形界面,能以最简便的方式完成apk的反编译操作。

2024-04-24 14:14:40 405 1

原创 Android 13 WMS-动画流程

动画的类型如下。

2024-03-07 19:16:28 1490

原创 Android14 Handle机制

Handle是进程内部, 线程之间的通信机制.handle主要接受子线程发送的数据, 并用此数据配合主线程更新UIhandle可以分发Message对象和Runnable对象到主线程中, 每个handle实例, 都会绑定到创建他的线程中, 它有两个作用,:(1) 安排消息在某个主线程中某个地方执行(2) 安排一个动作在不同的线程中执行Handle, Lopper, MessegeQueue, Message的关系handle机制中, 主要牵涉的类有如下四个, 它们分工明确, 但又互相作用。

2024-03-06 21:01:05 1112

原创 WindowInsets的分发流程

普通的view肯定调用的是本身的onApplyWindowInsets。如果没有在分发(if ((mPrivateFlags3 & PFLAG3_APPLYING_INSETS) == 0)),那么针对windowInsets继续进行分发,并设定PFLAG3_FITTING_SYSTEM_WINDOWS,在View.onApplyWindowInsets方法内如果判断存在PFLAG3_FITTING_SYSTEM_WINDOWS标记,那么直接执行fitSystemWIndowInt方法。

2024-02-23 10:00:00 1112

原创 Android系统启动流程

zygote孵化的第一个进程是launcher进程,也就是桌面进程,在fork出Launcher进程后,AMS会向Surfaceflinger请求结束掉开机动画,同时显示桌面程序,这样就完成了系统界面的加载与显示。zygote孵化的第一个进程是launcher进程,也就是桌面进程,在fork出Launcher进程后,AMS会向Surfaceflinger请求结束掉开机动画,同时显示桌面程序,这样就完成了系统界面的加载与显示。1.首先按开机键后,引导芯片将引导程序从ROM中加载到RAM中。

2024-02-22 21:01:35 444

原创 Android14 InputManager-InputManagerService环境的构造

IMS分为Java层与Native层两个部分,其启动过程是从Java部分的初始化开始,进而完成Native部分的初始化。□创建新的IMS对象。□调用IMS对象的start()函数完成启动同其他系统服务一样,IMS在SystemServer中的ServerThread线程中启动。

2024-02-21 16:25:34 1160

原创 Android14 InputManager-ANR原理

目标窗口查找时,作为派发目标的窗口必须已经准备好接收新的输入事件,否则判定窗口处于未响应状态,终止事件的派发过程,并在一段时间后再试。倘若5s后窗口仍然未准备好接收输入事件,将导致ANR。直接引发ANR的原因有很多,例如Activity生命周期函数调用超时,服务启动超时以及最常见的输入事件处理超时等。下面从输入事件超时的角度讨论ANR的产生原因与过程inputANR 分为两种无响应anr: 应用连接正常但是未相应事件,并且发生了超时无焦点窗口anr: 当前有焦点应用,但是无焦点窗口,并且超时。

2024-02-21 16:07:54 1414

原创 Android14 InputManager-焦点窗口的更新

设置焦点时需要先设置焦点APPmFo-cusedApp是一个AppWindowToken,在WMS中用来表示当前处于Resume状态的Activity。它是由AMS在开始启动一个Activity时调用WMS的setFocusedApp()函数设置的。考虑以下应用场景,当用户从Launcher中启动一个Activity之后,在新Activity的窗口显示之前便立刻按下了BACK键。很明显,用户的意图是关闭刚刚启动的Activity,而不是退出Launcher。

2024-02-21 15:44:33 1318

原创 Android14 InputManager-InputDispatcher的分发

dispatchOnceInnerLocked()函数的实现解释了以下几个问题:□如果派发队列为空,则会使派发线程陷入无限期休眠状态。□即将被派发的事件从派发队列中取出并保存在mPendingEvent成员变量中。□事件有可能因为某些原因而被丢弃,被丢弃的原因保存在dropReason中。□不同类型的事件使用不同的派发函数进行实际的派发动作。如本例中的Motion事件使用dispatchMotionLocked()函数进行派发。□派发一个事件至少需要一次线程循环才能完成。

2024-02-21 15:28:41 1229

原创 Android14 InputManager-InputReader的处理

IMS启动时会调用InputReader.start()方法当线程开始运行后,将会在内建的线程循环中不断地调用threadLoop(),直到此函数返回false,则退出线程循环,从而结束线程。InputReader的一次线程循环的工作思路非常清晰,一共三步:□首先从EventHub中抽取未处理的事件列表。这些事件分为两类,一类是从设备节点中读取的原始输入事件,另一类则是输入设备可用性变化事件,简称为设备事件。□通过processEventsLocked()对事件进行处理。

2024-02-21 15:02:02 1311

原创 Android14 WMS-DisplayArea层级结构生成

WMS

2024-02-03 21:41:59 1452

原创 Android 14 WMS-Configuration 与ConfigurationContainer类

Android Configuration ( 手机配置信息 ) 是用来描述手机设备的配置信息的,比如屏幕方向, 触摸屏的触摸方式等,所有的窗口和activity都含有Configuraton。属性Manifest作用mccmccSIM卡相关(移动国家码)mncmncSIM卡相关(移动网络码)修改地区随着locale变化触屏类型keyboardkeyboard键盘类型变化(外接键盘)键盘是否显示的状态变化navigationnavigation。

2024-01-25 16:59:31 1240

原创 Android14 SurfaceFlinger的合成

BLASTBufferQueue::queueBuffer 成功后,通过 listener->addAndGetFrameTimestamps 通知Queue成功时间。追溯下此listen的历史。

2024-01-24 15:47:12 864

原创 Android14 WMS 窗口布局流程performSurfacePlacement

以上就是对WindowManagerService中对所有窗口Surface固定工作流程的一些分析,主要还是对事务内的一些逻辑进行了重点分析。在整个过程中,充分利用了各个容器之间的关系和函数接口,从DisplayContent到叶子节点WindowState,进行了完整的遍历,完成了对所有Surface的摆放工作。

2024-01-23 18:06:53 1603

原创 Android14 InputManager SurfaceFlinger同步Windowinfo到Input

WMS通过 setInputWindowInfo将信息设置到SurfaceFlinger后是如何通知到Input的呢?如下图。

2024-01-22 21:11:42 582

原创 Android14 SurfaceFlinger Surface的创建

ViewRootImpl通过WMS创建surfaceControl然后通过surfaceControl创建BLASTBufferQueue让后通过BLASTBufferQueue.createSurface生成一个BBQSurface, 继承与Surface, 也就是创建了Surface, 最后返回给mSurface.BLASTBufferQueue是连接生产者和消费者的纽带。

2024-01-22 16:03:17 1073

原创 Android14 SurfaceFlinger的启动

由init进程启动,从main函数开始主要是初始化了Surflinger, 并启动了线程。

2024-01-21 21:01:02 1448

原创 Android14 InputManager-InputWindow的更新过程

InputDispatcher分发时间需要知道所有的窗口的信息, 而这些信息是由WMS更新到InputManager中的, 下面我们分析窗口信息更新的过程InputWindow类描述了窗口的布局信息, 包括创建口的位置窗口的大小, 是否有焦点等,是窗口存在在输入系统中的形式每个WindowState中都有一个InputWindowHandleWrapper 类。

2024-01-21 02:25:15 1158

原创 Android14 InputManager-InputChanel的建立

inputChannel是客户端窗口与inputDiapatcher传递的通道。本篇文章主要分析InputChannel的建立过程。从addView开始说起, 会调用到viewRootImpl的setVewViewRootImpl.setView函数首先生成一个InputChannel对象此时的对象是空的经过addToDisplayAsUser后将InputChannel赋值最后把生成一个mInputEventReceiver 用来接收input事件2.通过addToDisplayAsUser传

2024-01-20 23:11:59 953

原创 Android 14 SurfaceFlinger-Layer visibleRegion的计算过程

涉及到的文件:frameworks/native/services/surfaceflinger/layer.hframeworks/native/services/surfaceflinger/layer.cppframeworks/native/libs/ui/Transform.cppframeworks/native/libs/ui/Transform.hSurfaceControl.setPosition -> android_view_SurfaceControl: setPositi

2024-01-20 21:13:34 643

原创 Android14 WMS-添加窗口的过程

添加窗口时会把窗口添加到层级结构的合适位置中窗口分为系统窗口和APP窗口。

2024-01-19 11:39:09 1058

原创 Android14 AMS-activity的生命周期

这个方法在系统准备去启动或者恢复另一个活动的时候调用。我们通常会在这个方法中将一些消耗cpu的资源释放掉,以及保存一些关键数据,但这个方法执行的速度一定要快,不然会影响新的栈顶活动的使用。回调到ActivityThread的mAtmService.getLifecycleManager().scheduleTransaction(prev.app.getThread(),它在活动第一次被创建的时候调用,你应该在这个方法中完成活动的初始化操作,比如加载布局,绑定事件等。这个方法在活动准备好和用户交互时调用。

2024-01-12 16:30:06 538

原创 SurfaceFlinger的启动

dueTime判断callback是否需要立即执行,立即执行调用scheduleFrameLocked(now),通过DisplayEventReceiver.scheduleVsync()请求VSYNC信号,SurfaceFlinger在接收到请求信号后发出VSYNC信号,处理完请求后Choreographer不会接收到VSYNC,也就是说一个静止不刷新的界面是不需要接收VSYNC信号刷新的。waitMessage,通过采用一个死循环,处理Looper的pollOnce。但是中间有一个断层,就是。

2023-12-17 21:42:27 195

原创 Android14 SurfaceFlinger-BLASTBufferQueue的创建

分为两步。

2023-12-17 01:52:02 1714

原创 Android14 SurfaceFlinger-App到SurfaceFlinger的连接

这里调用了native层的ServiceManager去获取名为“SurfaceFlinger”的服务,这里能看到ISurfaceComposer的服务端实现便是SurfaceFlinger服务。在Client内部则通过sp类型的成员变量mFlinger保存了一个SurfaceFlinger的引用,Client也可以直接操作SurfaceFlinger。1)、首先创建一个SurfaceComposerClient对象。这里最终会调用到SurfaceFlinger的服务。

2023-12-17 00:17:15 559

原创 窗口的布局

以上就是对WindowManagerService中对所有窗口Surface固定工作流程的一些分析,主要还是对事务内的一些逻辑进行了重点分析。在整个过程中,充分利用了各个容器之间的关系和函数接口,从DisplayContent到叶子节点WindowState,进行了完整的遍历,完成了对所有Surface的摆放工作。

2023-12-11 00:31:15 1085

qud.win.1.1-installer-10053.9.zip

qud.win.1.1_installer_10053.9.zip

2024-04-24

adb-r-linux.zip adb-r-linux.zip

adb-r-linux.zip adb-r-linux.zip

2024-04-24

70-android.rules

70-android.rules

2024-04-24

51-android.rules

51-android.rules

2024-04-24

adb-r-darwin.zip

adb-r-darwin.zip

2024-04-24

adb环境资源 adb adb

adb环境资源

2024-04-24

无人驾驶之从视频中框处蓝色交通标记牌

可以从已经存在你的视频中识别出蓝色交通标记牌。。。

2018-06-10

图论理论总结

对图论知识点的总结,参考王也洲老师的课件,详细,有助于考试

2018-06-10

现代无线与移动通信作业论文

现代无线与移动通信大作业,现代无线与移动通信大作业,现代无线与移动通信大作业

2018-05-16

数据结构课件

c语言版的数据结构,对于想考计算机三级数据库的人很有帮助哦

2013-11-04

空空如也

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

TA关注的人

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