Android源码分析
文章平均质量分 82
DJLZPP
不积跬步无以至千里,不积小流无以成江海
展开
-
Android11 连接车机热点无法上网问题分析
网络问题原创 2024-04-24 14:24:02 · 854 阅读 · 2 评论 -
Android11 DNS解析流程
DNS的全称是domain name system,即域名系统。主要目的是将域名解析为IP地址,域名是方便用户记忆,但网络传输中源目地址使用IP地址来进行标识的,所以Android中的网络应用程序在发起http请求之前必然要经历DNS解析过程。原创 2023-06-16 21:35:07 · 4951 阅读 · 6 评论 -
Android12 窗口组织方式(对比Android10)
1. Android10窗口容器组织方式1.1 AMS和WMSAndroid10上对窗口的组织方式有两部分,AMS和WMS,AMS容器从大到小依次为:ActivityDisplay->ActivityStack->TaskRecord->ActivityRecord,WMS容器这边复杂很多,因为有一些特殊的窗口,大致可以理解为:顶级容器DisplayContent,其下有四大窗口容器,1. mBelowAppWindowsContainers(存储非APP类型窗口,并且要求其显示在A原创 2022-01-06 18:15:27 · 8217 阅读 · 2 评论 -
Android Q智能指针sp,wp
概述java提供了垃圾回收机制,不需要程序员自己手动释放对象,c++对于堆上创建的对象需要手动delete,对于庞大的Android系统来说,对象实在容易因为各种原因被忘记释放,造成内存泄露,所以Android提供了一种智能指针来帮助对象释放,sp强指针,wp弱指针。主要的类智能指针主要涉及如下几个类:/system/core/libutils/RefBase.cpp/system/co...原创 2019-12-30 20:23:34 · 1456 阅读 · 1 评论 -
AndroidQ 锁屏密码验证流程之GateKeeper解析
本篇文章分析一下GateKeeper这个模块,官网对GateKeeper的描述如下:GatekeeperGatekeeper 子系统会在可信执行环境 (TEE) 中执行设备解锁图案/密码身份验证。Gatekeeper 会使用由硬件支持的密钥通过 HMAC 注册和验证密码。此外,Gatekeeper 会限制连续失败的验证尝试次数,并且必须根据指定的超时和指定的连续失败尝试次数拒绝服务请求。当用...原创 2020-04-29 16:38:31 · 5938 阅读 · 17 评论 -
AndroidQ window和SurfaceFlinger建立连接分析
之前写了几篇文章来分析Android的窗口机制,我们知道不管什么窗口最终都会通过WMS的addWindow方法进行添加,这个方法中会为每一个符合要求的窗口创建一个WindowState用来描述,今天要分析的就是这些窗口创建好了之后和surfaceFlinger进程建立连接的过程直接从WMS的addWindow方法开始WMS.addWindowpublic int addWindow(Sess...原创 2020-04-10 17:12:21 · 1887 阅读 · 3 评论 -
AndroidQ SurfaceFlinger进程对Vsync的接收与分发(下)
上一篇文章分析到了SurfaceFlinger进程接收到来自硬件的Vsync的处理流程,主要是在EventThread内部线程的threadMain函数中,这个函数中主要分析了对接收到的事件的处理,并没有分析它的来源,导致遗留了两个问题:1.mPendingEvents里的事件是怎么来的,2.setVSyncEnabled函数的具体作用setVSyncEnabled函数的作用也分析了一部分,主要...原创 2020-04-01 16:11:19 · 1832 阅读 · 0 评论 -
AndroidQ SurfaceFlinger进程对Vsync的接收与分发(上)
前面两篇文章分析了应用层对Vsync的注册与接收,收到Vsync之后应用层便开始View的绘制我们先来回顾一下大致的流程:首先应用层想要绘制UI,则需要向native层注册接收下一个到来的Vsync,注册的过程是通过EventThreadConnection的Bp端最终调用到SurfaceFlinger进程的EventThread的requestNextVsync函数EventThread...原创 2020-03-31 20:31:40 · 2479 阅读 · 3 评论 -
AndroidQ 应用层Vsync信号的注册与接收(下)
上一篇文章主要分析了java层DisplayEventReceiver中的nativeInit函数,这个函数主要作用就是创建了应用层和surfaceFlinger的连接,通过一对socket,对应mReceiveFd和mSendFd,应用层通过native层Looper将mReceiveFd加入监听,随时等待mSendFd的写入这篇文章就来分析什么时候mSendFd会写入数据,以及如何传递到应用...原创 2020-03-30 11:17:31 · 2398 阅读 · 0 评论 -
AndroidQ 应用层Vsync信号的注册与接收(上)
上一篇文章我们分析了UI刷新机制,知道了Android UI刷新是在接收到Vsync信号之后才进行的,本篇我们继续分析Vsync如何向native层注册以及native层如何将Vsync发到上层根据上一篇文章,我们知道每当UI请求重绘时会调用Choreographer中的DisplayEventReceiver类的nativeScheduleVsync向native层注册监听Vsync,并且当下...原创 2020-03-27 16:29:57 · 3075 阅读 · 1 评论 -
AndroidQ UI刷新机制详解
本篇文章分析Android UI刷新机制,就是更新UI,做Android开发初期我们经常会听说不能在子线程更新UI,以及Activity的onCreate方法中获取不到View宽高的问题我们先来说一下子线程不能更新UI的问题:public class MainActivity extends AppCompatActivity { private Button button; ...原创 2020-03-25 18:37:44 · 3367 阅读 · 0 评论 -
AndroidQ FrameLayout的测量流程
上一篇文章总体分析了View的测量流程,从ViewRootImpl的performMeasure方法为入口,以递归的方式从DecoreView开始测量,这篇文章来详细分析一下FrameLayout递归测量完子View之后如何的到自己的size,比如对如下这个布局文件的测量进行分析:<?xml version="1.0" encoding="utf-8"?><FrameLayo...原创 2020-03-24 10:00:21 · 551 阅读 · 0 评论 -
AndroidQ View的测量流程onMeasure
本篇文章来分析一下View的测量流程,在写自定义控件时往往需要重写View的onMeasure来定义自己的测量规矩,如果我们不熟悉测量流程,就算根据别人的自定义控件学习,最后写出来了,但是再遇到新的自定义控件可能还是无从下手我们都知道View的测量,布局,绘制的入口在ViewRootImpl的performTraversals方法开始,而View的测量则是从最顶层的DecorView开始的,先测...原创 2020-03-23 15:23:22 · 517 阅读 · 0 评论 -
AndroidQ SystemUI之锁屏加载(下)密码锁屏
本篇文章接着上一篇,上一篇主要分析了滑动锁屏加载流程,这篇我们分析密码锁屏也叫Bouncer的加载,看看系统如何加载不同密码锁屏以及如何动态添加的我们知道密码锁屏有三种,pin/password/pattern,要显示密码锁屏,首先需要上滑滑动锁屏,我们就以上滑滑动锁屏为入口分析密码锁屏的出现通过上一篇文章我们知道滑动锁屏是一个id为notification_panel的自定义ViewGrou...原创 2020-03-02 16:05:39 · 2773 阅读 · 1 评论 -
AndroidQ SystemUI之Keyguard强认证机制StrongAuth
本篇文章分析一下Android系统的强认证机制,Google官方术语中,password/pin/pattern这三种类型的屏幕锁称为strong method authentication,强方法认证,而像指纹/面部解锁的方式则称作辅助的认证方式(weak auth)。Google认为指纹/面部解锁的安全性不如password/pin/pattern,在某些情况下无法使用指纹//面部解锁,例如...原创 2020-03-11 14:48:06 · 2013 阅读 · 0 评论 -
AndroidQ SystemUI之power键灭屏锁屏流程
本篇接着分析锁屏相关流程,通常我们点击power键会灭屏,灭屏时就会加载锁屏,以便用户能在下次亮屏时第一时间看到锁屏,我们就来看看点击power键灭屏锁屏的流程Android的事件分发流程大概是:InputReader读取dev/input设备节点的原始事件->通过封装传递给InputDispatcher->InputDispatcher找到对应处理事件的窗口并将事件分发到上层Vie...原创 2020-03-04 15:31:23 · 3134 阅读 · 1 评论