Android
文章平均质量分 68
droidYu
Android
展开
-
SystemServer 进程启动过程
之前的文章《浅析Android系统启动过程》简要讲解了Android系统整体启动过程,今天我们看一下其中一个重要的过程:SystemServer进程是如何启动的。文中源码基于Android 8.0上篇文章《Zygote进程启动过程》提到Zygote启动过程中调用了startSystemServer启动SystemServer进程,我们继续跟进里面的代码看SystemServer进程是如何启动的。在startSystemServer中通过fork方式创建了SystemServer进程,并调用hand原创 2022-02-28 09:26:32 · 269 阅读 · 0 评论 -
Zygote进程启动过程
上篇文章《浅析Android系统启动过程》简要讲解了Android系统整体启动过程,今天我们看一下其中一个重要的过程:Zygote进程是如何启动的。文中源码基于Android 8.0概览Zygote进程是通过init进程启动起来的,我们直接看Zygote进程的入口函数,位于ZygoteInit类中的main方法:public class ZygoteInit { public static void main(String argv[]) { ZygoteServer z原创 2022-02-27 14:14:50 · 401 阅读 · 0 评论 -
View体系(十一)View的draw流程
之前的文章《View体系(六)View工作流程入口》提到View的工作流程包括了measure、layout和draw的过程,今天我们就来看一下View的draw流程是怎样的。(注:文中源码基于 Android 12)View的draw流程很简单,源码里的注释官方也写的很清楚,我们看View的draw方法: public void draw(Canvas canvas) { ... // Step 1, draw the background, if need原创 2022-02-14 12:13:00 · 1559 阅读 · 0 评论 -
View体系(十)从LinearLayout分析View的布局流程
之前的文章《View体系(六)View工作流程入口》提到View的工作流程包括了measure、layout和draw的过程,上两篇文章《View体系(八)深入剖析View的onMeasure方法》和《View体系(九)从LinearLayout分析ViewGroup的测量流程》分别对View和ViewGroup的measure过程做了分析,今天我们就来看一下View的layout过程是怎样的。(注:文中源码基于 Android 12)先看View的layout方法:public void lay原创 2022-02-13 11:12:50 · 259 阅读 · 0 评论 -
View体系(九)从LinearLayout分析ViewGroup的测量流程
之前的文章《View体系(八)深入剖析View的onMeasure方法》我们深入分析了View的onMeasure方法,我们今天就来看一下ViewGroup的测量流程。(注:文中源码基于 Android 12)在View做测量时,会调用View的onMeasure方法,但是我们翻看ViewGroup的源码,并没有发现onMeasure方法,难道ViewGroup不用测量?显然不是,我们换一个类来看,LinearLayout继承自ViewGroup,我们从LinearLayout的源码中找到了熟悉的o原创 2022-02-12 10:22:51 · 235 阅读 · 0 评论 -
View体系(八)深入剖析View的onMeasure方法
之前的文章《View体系(六)View工作流程入口》介绍了View是从什么地方开始它的工作流程的,《View体系(七)理解 MeasureSpec》介绍了View在measure流程时的一个重要参数。有了上两篇的铺垫,我们就来看一下View的onMeasure方法到底做了什么。(注:文中源码基于 Android 12)在View做测量时,会调用View的onMeasure方法: protected void onMeasure(int widthMeasureSpec, int height原创 2022-02-10 18:39:18 · 308 阅读 · 0 评论 -
View体系(七)理解 MeasureSpec
MeasureSpec是View的内部类,MeasureSpec 封装了从父级传递到子级的测量要求。每个 MeasureSpec 代表对宽度或高度的要求。 MeasureSpec 由大小和模式两部分组成。更详细的说明请看 Google官方文档下面是MeasureSpec的源码:(基于Android 12) public static class MeasureSpec { private static final int MODE_SHIFT = 30; priv原创 2022-02-10 18:38:32 · 368 阅读 · 0 评论 -
View体系(六)View工作流程入口
View的工作流程,就是View进行measure、layout和draw的过程,本篇文章我们就来一起看一下View是如何开始他的工作流程的。(注:文中源码基于 Android 12)在上篇文章《View体系(五)熟悉又陌生的setContentView》中我们讲过Activity的结构,包括了Activity、PhoneWindow及DecorView。讲了PhoneWindow的创建和DecorView的创建,但此时DecorView还没有加载到PhoneWindow中,下面我们就从源码看一下D原创 2022-02-10 18:37:58 · 398 阅读 · 0 评论 -
View体系(五)熟悉又陌生的setContentView
为什么说setContentView熟悉呢?因为该方法是我们从入门Android开发就接触的一个方法,在我们写过的每一个Activity中都有他的身影。但为什么又说setContentView陌生呢?因为我们在日常的开发中只知道用,并没有深入分析该方法是怎么将我们传入的layout资源id变为一个可视的界面的。今天我们就来揭开这层神秘的面纱,扒一扒其中的原理(注:源码基于Android12)。因为我们日常开发的Activity最终都会继承自android.app.Activity,所以先看Activity原创 2022-02-10 18:37:16 · 719 阅读 · 0 评论 -
View体系(四)深入理解事件分发机制
上篇文章《View体系(三)初探View事件分发机制》对View的事件分发机制进行了粗略的讲解,并用代码实际探究了View事件的传递和处理过程。这篇文章就对View的事件分发机制进行一个更深入的讲解。之前提到过事件分发机制中的三个方法:dispatchTouchEvent(MotionEvent event)、onInterceptTouchEvent(MotionEvent ev)和onTouchEvent(MotionEvent event),那么这三个方法到底有什么样的关联呢?他们的关系其实可以用如原创 2022-02-10 18:36:40 · 168 阅读 · 0 评论 -
View体系(三)初探View事件分发机制
事件分发机制,简而言之就是Android对触摸事件的一系列传递和处理的机制。在了解分发机制之前需要对下面三个方法有个大概的了解:public boolean dispatchTouchEvent(MotionEvent event)用来进行事件的分发。如果有事件传递给当前View,那么此方法一定会被调用。返回值受当前View的onTouchEvent(MotionEvent event)和子View的dispatchTouchEvent(MotionEvent event)方法的影响,表示是否消耗当原创 2022-02-10 18:35:19 · 553 阅读 · 0 评论 -
View体系(二)View滑动的六种方式
在日常开发中,有时会遇到需要对View进行滑动处理的情况,今天我们就一起来看一下如何实现View的滑动。不管采用什么方式,实现思路基本是一致的:当触摸到View时,记下当前触摸点的坐标;当手指移动时,记下移动后触摸点的坐标,然后用两个坐标算出移动的偏移量,再利用偏移量来修改View的坐标。下面分别来讲解实现View滑动的6种方式。一、layout()layout()方法是View在进行布局流程时调用的一个方法,我们可以在移动View时调用次方法,不断的进行View的布局,达到滑动View的目的。具体原创 2022-02-10 18:34:40 · 575 阅读 · 0 评论 -
View体系(一)View基础知识
View 及ViewGroup在Android中,常用控件可大致分为两大类:View与ViewGroup。ViewGroup可包含多个View及ViewGroup,形成一个树状结构。需要注意的是ViewGroup也继承自View。View及ViewGroup组织结构如下:常见的可视控件都是View的子类,如:TextView ,Button ,ImageView 等。常见的布局控件都是ViewGroup的子类,如:LinearLayout ,FrameLayout , RelativeLayout原创 2022-02-10 18:33:51 · 266 阅读 · 0 评论 -
浅析Android系统启动过程
Android系统的启动流程是十分复杂的,但是作为应用层的开发人员来说,了解其大致流程即可。启动流程概览Android系统启动流程大致可以概括为以下的几个步骤:启动电源及系统启动引导程序BootLoader启动Linux内核启动init进程启动Zygote进程启动SystemServer进程启动Launcher启动关键进程在介绍启动流程之前,先来了解一下几个关键的进程及其作用:init进程init进程是Android系统中用户空间的第一个进程,进程号原创 2022-02-09 18:09:44 · 1015 阅读 · 0 评论 -
【学习笔记】登录和第三方授权
登录和第三方授权原创 2021-08-03 17:52:55 · 404 阅读 · 0 评论 -
【学习笔记】编码、压缩、加密、Hash、序列化和字符集
编码、压缩、加密、Hash、序列化和字符集原创 2021-08-03 17:06:59 · 613 阅读 · 0 评论 -
【学习笔记】HTTP、TCP/IP及HTTPS
HTTP、TCP/IP及HTTPS学习笔记原创 2021-08-01 22:43:51 · 138 阅读 · 0 评论 -
【Jetpack系列】DataBinding简单使用(Kotlin)
DataBinding学习笔记原创 2021-07-20 22:54:49 · 822 阅读 · 5 评论 -
【Jetpack系列】WorkManager简单使用(Kotlin)
WorkManager学习笔记原创 2021-07-19 22:51:48 · 315 阅读 · 2 评论 -
【Jetpack系列】Room简单使用(Kotlin)
Room学习笔记原创 2021-07-18 12:02:14 · 395 阅读 · 0 评论 -
【Jetpack系列】LiveData简单使用(Kotlin)
LiveData学习笔记原创 2021-07-17 17:36:29 · 1472 阅读 · 0 评论 -
【Jetpack系列】ViewModel简单使用(Kotlin)
ViewModel学习笔记原创 2021-07-17 10:17:32 · 700 阅读 · 0 评论 -
【Jetpack系列】Navigation简单使用(Kotlin)
Navigation学习笔记原创 2021-07-16 20:37:00 · 656 阅读 · 3 评论 -
【Jetpack系列】LifeCycle简单使用(Kotlin)
LifeCycle学习笔记原创 2021-07-16 11:58:11 · 1367 阅读 · 0 评论 -
RxJava简单使用(Kotlin)
RxJava学习笔记原创 2021-07-10 18:25:03 · 1134 阅读 · 0 评论 -
EventBus简单使用(Kotlin)
EventBus学习笔记原创 2021-07-10 17:13:20 · 398 阅读 · 0 评论 -
Retrofit简单使用(Kotlin)
Retrofit学习笔记原创 2021-07-10 16:21:34 · 463 阅读 · 0 评论 -
OkHttp简单使用(Kotlin)
OkHttp学习笔记原创 2021-07-09 17:25:18 · 6985 阅读 · 1 评论