
Android源码解读
文章平均质量分 96
一叶飘舟
目标赋予我们生命的意义和目的。有了目标,我们才会把注意力集中在追求喜悦,而不是在避免痛苦上。(急需找我,加微信:jdsjlzx)
展开
-
Handler机制详解
Android的消息机制主要是指Handler的运行机制即:消息的发送、入队、出队、分发过程。转载 2023-02-13 19:11:47 · 2328 阅读 · 0 评论 -
Handler sync barrier(同步屏障)
Handler中的Message可以分为两类:同步消息、异步消息。消息类型可以通过以下函数得知//Message.javapublic boolean isAsynchronous() { return (flags & FLAG_ASYNCHRONOUS) != 0;}一般情况下这两种消息的处理方式没什么区别,只有在设置了同步屏障时才会出现差异。1 什么是同步屏障同步屏障可以通过MessageQueue.postSyncBarrier函数来设置 /**转载 2020-12-03 20:04:09 · 1516 阅读 · 0 评论 -
IdleHandler 是什么?怎么使用,能解决什么问题?
一. 序Handler 机制算是 Android 基本功,面试常客。但现在面试,多数已经不会直接让你讲讲 Handler 的机制,Looper 是如何循环的,MessageQueue 是如何管理 Message 等,而是基于场景去提问,看看你对 Handler 机制的掌握是否扎实。本文就来聊聊 Handler 中的 IdleHandler,这个我们比较少用的功能。它能干什么?怎么使用?有什么合适的使用场景?哪些不是合适的使用场景?在 Android Framework 中有哪些地方用到了它?二.转载 2020-12-03 15:08:01 · 13043 阅读 · 7 评论 -
Android Glide如何把生命周期安排得明明白白
前言图片模块是 App 中非常重要的一个组件,而 Glide 作为官方和业界双重认可的解决方案,其学习价值不必多言; 在这篇文章里,我将分析 Glide 生命周期管理,主要分为三个层次的生命周期:Activity & 网络 & 内存。如果能帮上忙,请务必点赞加关注,这真的对我非常重要。提示: 本文源码基于Glide 4.11目录1. 概述使用 Glide 加载图片非常简单,类似这样:Glide.with(activity) .load(url).转载 2020-12-03 11:53:02 · 2029 阅读 · 0 评论 -
View & Fragment & Window 的 getContext() 一定返回 Activity 吗?
目录1. 问题分析1.1 Context 有哪些?首先,我们回顾一下 Context 以及它的子类,在之前的这篇文章里,我们曾经讨论过:《Android | 一个进程有多少个 Context 对象(答对的不多)》。简单来说:Context 使用了装饰模式,除了 ContextImpl 外,其他 Context 都是 ContextWrapper 的子类。我们熟悉的 Activity & Service & Application,都是 ContextWrapper 的转载 2020-11-30 15:19:05 · 1122 阅读 · 0 评论 -
Android面试官装逼失败之:Activity的启动模式
面试的时候,面试官经常同你随便侃侃Activity的启动模式,但Activity启动牵扯的知识点其实很多,并非能单单用四个启动模式就能概括的,默认的启动模式的表现会随着Intent Flag的设置而改变,因此侃Activity启动模式大多走流程装逼,最多结合项目遇到的问题,随便刁难一下面试者,并不太容易把控,也许最后,面试官跟面试者的答案都是错了,比如在Service中必须通过设置FLAG_ACTIVITY_NEW_TASK才能启动Activity,这个时候启动Activit会有什么样的表现呢?就这一个问题转载 2020-08-26 10:40:19 · 629 阅读 · 0 评论 -
“Handler中有Loop死循环,为什么没有阻塞主线程,原理是什么?”
前言Android的消息机制主要是指Handler的运行机制,对于大家来说Handler已经是轻车熟路了,可是真的掌握了Handler?本文主要通过几个问题围绕着Handler展开深入并拓展的了解。站在巨人的肩膀上会看的更远。大家有兴趣的也可以到Gityuan的博客上多了解了解,全部都是干货。而且他写的东西比较权威,毕竟也是小米系统工程师的骨干成员。Questions Looper 死循环为什么不会导致应用卡死,会消耗大量资源吗? 主线程的消息循环机制是什么(死循环如何处理其它事转载 2020-08-25 15:45:59 · 5345 阅读 · 2 评论 -
View.post() 原理深入理解
关于View.post() 相信每个Android开发人员都不会感到陌生,它最常见的场景主要有两种。 更新 UI 操作 获取 View 的实际宽高 view.post() 的内部也是调用了 Handler,这可能是绝大多数开发人员所了解的,从本质来说这样理解并没有错,不过它并能解释上面提出的第 2 个场景。在 Activity 中,View 绘制流程的开始时机是在 ActivityThread 的 handleResumeActivity 方法,在该方法首先完成 Activit...转载 2020-07-16 23:33:29 · 6729 阅读 · 1 评论 -
Android控制View绘制顺序的关键方法——setChildrenDrawingOrderEnabled
今天我们来聊聊 View 绘制流程的一个小细节,自定义绘制顺序。View 的三大流程:测量、布局、绘制,我想大家应该都烂熟于心。而在绘制阶段,ViewGroup 不光要绘制自身,还需循环绘制其一众子 View,这个绘制策略默认为顺序绘制,即 [0 ~ childCount)。这个默认的策略,有办法调整吗?例如修改成 (childCount ~ 0],或是修成某个 View 最后绘制。同时又有什么场景需要我们做这样的修改?需要注意的是,绘制顺序会影响覆盖顺序,同时也会影响 View 的事件分发,这原创 2020-07-16 09:13:10 · 3275 阅读 · 0 评论 -
源码分析 — Activity的启动流程
前言熟悉Activity的启动流程和运行原理是一个合格的应用开发人员所应该具备的基本素质,其重要程度就不多做描述了。同时,知识栈应该不断的更新,最新发布的Android 9.0版本相较于之前的几个版本也做了许多改动和重构,但是大体流程变化不大。本文基于Android 9.0版本源码,从Activity启动方法startActivity为切入口分析整个流程。相关类简介Instrument...转载 2019-08-04 11:38:13 · 726 阅读 · 2 评论 -
从源码的角度解析Handler、Looper、Message和MessageQueue
原文链接:https://blog.youkuaiyun.com/yyh352091626/article/details/74280135作为一名Android程序猿,想必在最开始都碰到这么一个问题,就是在子线程中弹出一个Toast,会抛出以下的异常:java.lang.RuntimeException: Can't create handler inside thread that has n...转载 2019-07-30 18:11:26 · 505 阅读 · 0 评论 -
Android系统启动流程—— init进程zygote进程SystemServer进程启动流程
原文地址:https://blog.youkuaiyun.com/qq_30993595/article/details/82714409Android系统启动流程Android系统启动过程往细了说可以分为5步:Loader --》Kernel --》Native --》Framework --》ApplicationLoaderBoot ROM: 当手机处于关机状态时,长按Power键...转载 2019-07-30 16:41:49 · 4230 阅读 · 1 评论 -
从Zygote说到View——Zygote的启动流程及运行机制
原文链接:https://juejin.im/post/5c05366f6fb9a049f23c82f2作者说这是一个系列的文章,目前看来也就这一篇了。前言Zygote 的中文意思是受精卵、合子,可以理解为孵化器——Android 中大多数应用进程和系统进程都是通过 Zygote 来生成的。PS:源码基于 Android API 27。Zygote 是怎么启动的?init...转载 2019-07-30 15:27:09 · 660 阅读 · 0 评论 -
深入理解 Android 中的各种 Context
前言网上关于 Context 的文章也已经有不少了,比如值得参考的有:Android Context完全解析,你所不知道的Context的各种细节Android Context 到底是什么?但看了一下,发现还有值得讨论的地方,比如这个等式:Context个数 = Service 个数 + Activity 个数 + 1老实说,我不明白这个等式有什么意义,而且还是错的。首先多进程情况...转载 2019-07-30 13:56:45 · 925 阅读 · 0 评论