# 标签

AOSP

共 67 篇文章

View的invalidate()流程​
Android

View的invalidate()流程​

View的invalidate()流程自定义View的时候常用到invalidate()方法,为了刷新View以重新绘制。和requestLayout()不同的是,调用invalidate()后只会回调调用View的draw()方法;而调用requestLayout()则会从上到下重新测量、布局一遍。 应根据实际情况选择使用invalidate()还是requestLayout(),如果只需要刷新

2.5k
View的requestLayout()流程
Android

View的requestLayout()流程

View的requestLayout()流程requestLayout()常用来对View重新进行测量、布局和绘制。当View需要更新当前的布局时,就向父布局申请重新布局。虽然是ViewParent接口中定义的方法:但其完整实现却在View中,而不在ViewGroup类里(后面会讲到):在继续跟随源码剖析requestLayout()流程之前,先搞清楚View中的mParent从哪来?1、View

2.4k
UncaughtExceptionHandler 原理​
Android

UncaughtExceptionHandler 原理​

UncaughtExceptionHandler 原理使用UncaughtExceptionHandler捕获运行时线程中发生的未捕获异常,可以极大的提高应用稳定性。UncaughtExceptionHandler使用很方便,参考异常捕捉:UncaughtExceptionHandler一文。1、线程异常传递当线程运行出现奔溃,JVM虚拟机会调用Thread的dispatchUncaughtExc

2.4k
Android

MessageQueue中的同步屏障

MessageQueue中的同步屏障Message,最早可以翻到两年前写的一篇粗浅博客《信件:Message》。当时还不明白异步消息、同步消息,更不懂今天要写的同步屏障。同步屏障,简而言之就是让异步消息的优先级高于同步消息,优先被处理。1、同步屏障MessageQueue设置同步屏障后,会拦截对同步消息的处理,只会处理异步消息,如果没有异步消息则进入阻塞状态。若没有及时移除同步屏障,所有的同步消息

2.1k
Choreographer源码阅读
Android

Choreographer源码阅读

Choreographer源码阅读之前已经在很多地方看到过Choreographer的身影,必须要仔细的看一遍Choreographer源码以理解其实现原理。Choreographer请求和接受来自底层的VSYNC信号,给上层应用提供一个稳定的周期,去处理Input事件、动画、更新布局等。1、Choreographer构造及初始化Choreographer直译为编舞者,看完源码更能理解Choreo

2.7k
Animator属性动画源码
Android

Animator属性动画源码

Animator属性动画源码仔细看看属性动画的源码,加深对动画实现原理的了解。ObjectAnimator继承自ValueAnimator,本篇主要以ValueAnimator为主。关于属性动画,详见之前两篇介绍属性动画的文章:属性动画:ValueAnimator和属性动画:ObjectAnimator。1、属性动画的构造得益于框架优秀的设计,构造一个属性动画对象很简单,举个简单的例子:从Valu

2.4k
LayoutParams初始化流程
Android

LayoutParams初始化流程

LayoutParams初始化流程在View布局参数LayoutParams一文中对布局参数有了详细的了解。用getLayoutParams()方法获取View的布局参数:每个View中的mLayoutParams实例可以通过setLayoutParams(ViewGroup.LayoutParams params)方法设置的:不需要为View初始化mLayoutParams实例,因为这是View

2.1k
bindService绑定服务源码流程
Android

bindService绑定服务源码流程

bindService绑定服务源码流程终于轮到双休,周末可以摸一下书。本次阅读的源码基于API 30,将来回头再看可能有误。1、绑定ServiceService作为四大组件之一,承担着执行后台任务的重担。有两种启动方式:①startService,②bindService。本篇跟随源码了解绑定Service的过程。绑定Service仅需简单几步:将Service的绑定过程拆分开来看,并不复杂,逻辑

2.1k
StrictMode原理剖析
Android

StrictMode原理剖析

StrictMode原理剖析在上一篇StrictMode:严格模式的使用中了解了StrictMode的使用,接下来深入源码,探索StrictMode的实现。主要涉及的源码目录如下:/frameworks/base/core/java/android/os/strictmode/libcore/dalvik/src/main/java/dalvik/system/libcore/luni/src/m

2.8k
Apk的安装过程探究
Android

Apk的安装过程探究

Apk的安装过程探究有了APK的构建过程和APK的组成结构两篇铺垫,以及PackageManagerService基础。终于到了最后阶段:Apk的安装过程。这块内容比较多,抽空断断续续的看了一个星期摸清楚。通常Apk的安装方式有三种:①手机上点击Apk文件,打开安装界面进行安装②通过代码的方式静默安装,比如手机自带的应用商店安装应用。③开发者使用adb命令安装apk文件挨个探究以上三个方式,每种方

4.9k 1
Android

PackageManagerService启动流程

PackageManagerService启动流程前面通过APK的构建过程和APK的组成结构两篇铺垫,准备研究Apk的安装过程之前,先需要搞清楚PackageManagerService,也就是平时经常听到的PMS,是由SystemServer进程创建的系统服务之一。用API 30的源码阅读PMS服务的初始化流程,新的源码和目前的书籍资料相差较大(普遍基于API 28),源码看起来就比较费时间,因

4.0k
Android

Android 系统架构详解

Android 系统架构详解Android 是由 Google 主导、AOSP(Android 开源项目)维护的开源移动操作系统。自 2008 年发布以来,它已成长为全球市场份额最大的移动平台,覆盖手机、平板、手表、电视、车载乃至物联网设备。Android 之所以能够适配如此多样的硬件,得益于其清晰分明的分层软件栈架构——每一层都为上一层提供服务,并通过定义良好的接口与硬件实现解耦。本文自上而下逐

167
View的绘制流程
Android

View的绘制流程

View的绘制流程要成为一个优秀的Android开发者就必须要了解View的绘制流程。在DecorView添加到Window中的流程一文我们了解了DecorView添加到Window的整个过程,同时在最后留下了伏笔:View添加到Window的同时,也开启了View的绘制流程。现在继续跟着源码熟悉View的绘制流程。1、接上回--View添加到Window上回说到View添加到Window的流程,

2.0k
DecorView添加到Window的流程
Android

DecorView添加到Window的流程

DecorView添加到Window的流程在Activity的组成结构一文中,了解了Activity的组成,内部持有Window实例,再由这个Window管理布局。Activity中的Window何时被创建并被添加到Activity中的呢?DecorView是如何被加载到Window中的。1、Window的创建在Activity启动流程全新版本一文中,详细捋清了Activity的启动流程。顺着继续

1.9k
Activity启动流程全新版本(基于API 30)
Android

Activity启动流程全新版本(基于API 30)

Activity启动流程全新版本(基于API 30)最新的AOSP源码对Activity的启动流程进行了非常大的改动,更好的支持Lifecycle。现在基于API 30源码熟悉一下全新的Activity启动流程。一年前阅读老版本AOSP写的博客仍然保留,传送门:Activity启动流程源码分析。1、从startActivity开始构造启动的Intent,一般通过Activity或者Context的

2.8k