随笔分类 - Android系统源码
摘要:Android的进程都是通过Zygote fork而来的,那这些进程的启动流程都是怎样的呢?本文将基于Android P的源码来分析Android系统框架进程SystemServer和应用程序进程的创建过程,力求完整和简洁,只关注关键流程。
阅读全文
摘要:Activity的启动流程是一个资深Android工程师必须掌握的内容,也是高职级面试中的高频面试知识点,无论是从事应用层开发,还是Framework开发,其重要性都无需我多言。本文将从Android8.1源码入手,抽丝剥茧,摒弃众多的细节,而着重于关键流程的梳理,力图做到完整展示整个流程,而又能够简洁易懂。
阅读全文
摘要:目光所及,皆有Window!Window,顾名思义,窗口,它是应用与用户交互的一个窗口,我们所见到视图,都对应着一个Window。比如屏幕上方的状态栏、下方的导航栏、按音量键调出来音量控制栏、充电时的充电界面、屏幕中间的应用显示区域(Activity)、Dialog、Toast、PopWindow、菜单等,都依附于对应的Window。可以认为Window是View的实际直接管理者,所以理解Window相关的知识,对理解Android的视图机制有很大的帮助。本文将介绍Window相关的基础知识,以及从源码的角度分析WindowManager是如何将View呈现在界面的。
阅读全文
摘要:runOnUiThread()是Activity类中的方法,它用于从子线程中切换到主线程来执行一些操作。相比于通过显示使用Handler,重写AsyncTask方法来说,它的使用和原理要简单得多。真不愧是咱们广大程序猿的贴心小棉袄啊!
阅读全文
摘要:ThreadLocal完全是一个可爱的宝藏男孩,对多线程下访问数据带来了极大的便利。而且使用简单,设计简洁,非常容易掌握。本文就通过生活中的场景,使用实例,源码分析等方面来全面讲解ThreadLocal。我敢用10包辣条打赌,你一定没有见过这么通透的讲解!
阅读全文
摘要:提起View.post(),相信不少童鞋一点都不陌生,它用得最多的有两个功能,使用简便而且实用:1)在子线程中更新UI。从子线程中切换到主线程更新UI,不需要额外new一个Handler实例来实现。2)获取View的宽高等属性值。在Activity的onCreate()、onStart()、onResume()等方法中调用View.getWidth()等方法时会返回0,而通过post方法却可以解决这个问题。本文将由从源码角度来分析其中的原理。
阅读全文
摘要:SystemUI是系统启动中第一个用户肉眼可见的应用,其功能包罗万象,比如开机后看到的锁屏界面,充电时充电界面,状态栏,导航栏,多任务栏等,都是与Android手机用户息息相关的功能。所以不止SystemUI开发者,普通的应用开发者也很有必要去了解一下SystemUI。本系列文章会基于Android P和Android Q来介绍SystemUI的各个方面,本篇作为本系列第一篇,主要介绍了SystemUI的启动流程,以及主要功能简介。
阅读全文
摘要:对于一个Android应用层开发者来说,了解Android系统的启动流程对理解Android系统有很大的帮助。本文根据刘望舒的《Android进阶解密》第二章中的内容进行了梳理,希望通过本文,能宏观地理解Android系统的启动流程,加深对Android系统的理解。
阅读全文
摘要:自定义View、多线程、网络,被认为是Android开发者必须牢固掌握的最基础的三大基本功。Android View的绘制流程原理又是学好自定义View的理论基础,所以掌握好View的绘制原理是Android开发进阶中无法绕过的一道坎。而关乎到原理性的东西往往又让很多初学者感到难以下手,所以真正掌握的人并不多。本文采用非常浅显的语言,从顺着Android源码的思路,对View的整个绘制流程进行近乎“地毯式搜索”般的方式,对其中的关键流程和知识点进行查证和分析,以图让初级程序员都能轻松读懂。
阅读全文
摘要:JDK提供了两个方法,System.currentTimeMillis()和System.nanoTime(),这两个方法都可以用来获取表征当前时间的数值。但是如果不仔细辨别这两个方法的差别和联系,在使用当中也很容易栽跟头。笔者在前不久的工作当中使用System.currentTimeMillis()时就踩了一个大坑,后来在查明这两者的特性后,才用System.nanoTime()来填了这个坑。本文,笔者就以自己的踩坑和填坑经历来介绍一下这两个方法。
阅读全文
摘要:链接:【系统解读】SystemUI篇(一)SystemUI启动流程详解 https://www.cnblogs.com/andy-songwei/p/11471355.html 四、Keyguard分析 KeyguardService.java类 完整路径:frameworks/base/packa
阅读全文
摘要:Source Insight是当前世界上最好的程序编辑器之一,几乎支持所有的语言,拥有丰富且便捷的功能,快捷的源码导航能力,实时显示的上下文信息,独立的符号数据库等特点,使得它在世界范围内广受程序员和IT公司的欢迎。
阅读全文
摘要:古人常说,“熟读唐诗三百首,不会作诗也会吟”,说明了大量阅读诗歌名篇对学习作诗有非常大的帮助。做Android开发也一样,要想成为Android开发领域的行家里手,就必须去大量阅读Android源码。这些源码是全世界最优秀的Android工程师的杰作,值得每一位开发者去深入研究和细细品读。
阅读全文
摘要:Handler的身影总是时不时出现在工作,笔试,面试中,可见其对于Android的重要性。Android中子线程和UI线程(即主线程),就像古时候的痴男和怨女。两情相悦,要谈婚论嫁了,限于封建礼仪,又不能直接告白或求婚,只能请媒婆来说媒了。Handler就像这样一个媒婆,在子线程和UI线程中扮演了重要的媒介作用。
阅读全文