原理
文章平均质量分 94
Android三方框架和源码原理
VincentWei95
这个作者很懒,什么都没留下…
展开
-
换肤实现及LayoutInflater原理
不知道你在接到项目需求需要实现换肤功能时,有没有想过到底为什么需要换肤?虽然这是一篇技术文章,但我们不妨从产品和运营的角度想一想,实现换肤它究竟有什么样的价值?在 Android 10 从系统层面已经为我们提供了深色主题(也就是夜间模式),它也可以认为是换肤的一种,官方文档对深色主题列举了以下优势:可大幅减少耗电量(具体取决于设备的屏幕技术)为弱视以及对强光敏感的用户提高可视性让所有人都可以在光线较暗的环境中更轻松地使用设备系统提供给我们只有日间和夜间模式,从用户的角度它满足了在日间和夜间两种场景下更好的使原创 2023-04-26 14:02:00 · 955 阅读 · 0 评论 -
Jetpack:DataBinding
该篇文章从布局绑定、注册监听、数据驱动 UI 更新各个流程都做了详细的源码分析,根据上面的内容我们再做对各流程做一个总结梳理。通过 Activity 的 setContentView() 加载布局根据布局根节点的 tag 属性 layout/activity_xxx_0 创建对应布局的 ViewDataBindingViewDataBinding 创建时遍历布局所有的 View 存到数组中,数组的 View 赋值给 ViewDataBinding 的控件变量。原创 2023-03-21 18:08:35 · 351 阅读 · 2 评论 -
Android 组件化与路由跳转实现
路由是在 Android 组件化开发中必不可少的组件,两个独立的模块不能有直接引用,界面的跳转都经过路由中转实现。在讲路由之前,我们需要理解一个概念:什么是路由?路由本来是网络的概念,而放在 Android 开发中,我们可以将项目的每个 module 看成不同的网络,路由就是连接各个 module 的中转站,这个中转站可以对页面跳转的参数等统一处理后再进行转发。或许你会有这样的疑惑:隐式跳转也能实现跨 module,也可以实现相应的功能;还有也可以用反射来实现,为什么要用路由?原创 2023-01-09 20:16:15 · 1494 阅读 · 0 评论 -
Android AMS(ActivityManagerService) 原理
为什么会有 AMSPMS 的作用:包管理、包解析、将解析结果缓存、提供查询接口AMS 是管理调度 Activity当没有 AMS、PMS 会发生什么?1、需要遍历 data/app2、解压 apk3、dom 解析 AndroidManifest.xml 解析出 Activity 标签4、获取到 Activity 全类名,反射构建对象5、跳转 MainActivity每次开启一个应用都要这么处理,效率是很低的,所以我们需要 PMS 和 AMS。前三个步骤由 PMS 管理,AMS 处理后面两原创 2022-10-01 15:52:07 · 3598 阅读 · 0 评论 -
Android PMS(PackageManagerService) 原理
为什么要有 PMS手机里面的 apk 都会在 data/app 目录下,知道这个 apk 路径很简单,难的地方在于怎么管理 apk 里面的信息,例如怎么提供给 AMS 需要的 Activity 信息等。所以就需要 PMS 提前将 apk 的信息缓存起来。PMS 缓存信息是在手机开机启动这段时间处理解析的,所以这也是为什么手机开启启动比较慢的原因之一。PMS 分析 apk 压缩文件当手机开机时,PMS 会扫描 data/app/package/base.apk,还有 system/app/packag原创 2022-05-24 13:48:14 · 4101 阅读 · 0 评论 -
Android 系统启动流程与 Zygote、SystemServer
文章目录init 进程Zygote 进程SystemServer 进程ServiceManager 进程问题init 进程init 进程的 id 为 1,0 是 linux 内核,在 linux 中 id 的大小和启动顺序有关,意思是 linux 内核启动后,启动的就是 init 进程。init 进程主要有两个作用:启动系统关键的服务守护关键服务,重启手机怎样的服务属于关键服务?关键服务是对于手机而言必不可少的服务,比如网络服务、蓝牙服务、铃声服务,而 AMS、PMS 等这些父进程不原创 2022-03-27 17:23:27 · 952 阅读 · 0 评论 -
Android launchMode
很多 Android 工程师在投简历找工作之前,会去复习一下 Activity 的 launchMode 启动模式,因为面试的时候会考,但真正把它搞懂的人是很少的,包括很多拿它做面试题的面试官。当用户在使用 App 的时候,按下了 Home 键,然后再切回来,或者在多个 App 之间切来切去,App 的内容会不会改变,会怎么改变,要怎么让它按你的需求去变或者不变,这些问题都需要你对 launchMode 有足够的了解;而且不止 launchMode,这是一个以 Activity 的回退栈为核心的大话题,你转载 2021-12-05 23:50:50 · 608 阅读 · 1 评论 -
Android RecyclerView原理
文章目录从ListView到RecyclerViewRecyclerView核心运行机制ListView复用机制RecyclerView中的缓存RecyclerView核心机制RecyclerView复用机制源码解析从ListView到RecyclerViewRecyclerView 是在 Google I/O 在2014年时推出的控件,在 RecyclerView 还未出现前,列表的都是使用的 ListView,ListView 通过 View 和 Adapter 的组合将数据展示出来,现在应该基本都转载 2021-04-24 15:54:32 · 2986 阅读 · 3 评论 -
Android性能优化系列:VSync、Choreographer 和 Render Thread
文章目录1 什么是VSYNC?1.1 帧率和刷新频率1.2 VSYNC21 什么是VSYNC?1.1 帧率和刷新频率在讲解 VSYNC 之前,需要了解两个相关的概念:Refresh Rate:屏幕在1秒内刷新屏幕的次数,这取决于硬件的固定参数,例如60HzFrame Rate:GPU在1秒内绘制操作的帧数,例如60fpsGPU会获取图形数据进行渲染,然后硬件负责把渲染后的内容呈现到屏幕上,它们两者不停的进行协作:帧率和刷新频率并不是总能够保持相同的节奏,通常来说,帧率超过刷新频率原创 2020-09-17 00:02:11 · 2889 阅读 · 3 评论 -
LeakCanary源码解析
文章目录1 Java和C/C++语言的内存泄漏2 垃圾回收机制2.1 引用计数法1 Java和C/C++语言的内存泄漏在C/C++语言开发过程中,比如C语言 malloc 分配内存 free 释放内存,C++是 new Object 分配内存 delete object 释放内存,对象的内存分配回收都需要程序员下意识的去维护,否则很容易出现内存泄漏。但在Java中却没有这种情况,我们使用Ja...原创 2020-02-26 18:02:47 · 1231 阅读 · 0 评论 -
属性动画原理解析
属性动画原理转载 2020-02-03 20:35:27 · 167 阅读 · 0 评论 -
Android自定义View系列:多点触控原理
文章目录1 事件拦截机制2 getAction()和getActionMasked()的区别2 多点触控事件序列分析2.1 index和id2.2 getActionIndex()3 多点触控的三种使用场景3.1 接力型3.2 配合型/协作型3.3 各自为战型4 结合多点触控的触摸事件结构总结1 事件拦截机制阅读下面的多点触控原理知识,需要了解一定的事件拦截机制原理,可以参考我编写的文章:An...原创 2020-01-22 12:05:54 · 1453 阅读 · 2 评论 -
登录和第三方授权(Cookie和Authorization)
文章目录1 登录和授权的区别2 Cookie2.1 Cookie的工作机制2.2 Cookie的作用2.3 Cookie存在的问题(了解即可)3 Authorization3.1 Basic3.2 Bearer3.2.1 OAuth2流程(第三方授权)3.2.2 微信登录(第三方登录)3.2.3 OAuth2流程简单总结3.2.4 自家App中使用Bearer token3.2.5 Refresh...原创 2020-03-13 10:31:44 · 13714 阅读 · 0 评论 -
热修复/热更新技术原理
文章目录1 热修复技术出现的背景2 热修复技术简介3 热修复技术需要掌握的基本知识4 插件化和热修复的区别5 插件化5.1 什么是插件化5.2 插件化例子5.3 新增界面、资源的插件6 热修复技术1 热修复技术出现的背景要说到热修复的出现,主要还是因为在中国Android应用没有一个统一的应用商店,每个手机厂商基本都会定制自己的一款手机应用市场,不像国外的统一都使用Google Play。中...原创 2019-12-31 16:35:43 · 2632 阅读 · 1 评论 -
View绘制流程源码解析
1 View能在子线程更新吗1 View绘制流程的主要对象2 View绘制流程的函数调用原创 2019-12-26 22:17:24 · 657 阅读 · 0 评论 -
Android RxJava源码解析
1 Single.just()我们会从RxJava使用的用例来切入源码的分析。首先看一下最基本最简单的一个RxJava使用例子 Single:Single.just("1").subscribe(new SingleObserver<String>() { @Override public void onSubscribe(Disposable d) { ...原创 2019-12-10 09:35:33 · 451 阅读 · 0 评论 -
HashMap 原理
1 HashMap java7HashMap在Java7时是使用数组+链表的数据结构实现的,那么具体怎么实现?我们在使用HashMap时,一般是使用的无参构造创建:Map<Integer, String> map = new HashMap<>();跟进去无参构造函数源码:// 默认数组大小16static final int DEFAULT_INITIAL_...原创 2019-12-06 15:00:43 · 324 阅读 · 1 评论 -
Android RemoteViews原理
文章目录1 RemoteViews的应用1.1 RemoteViews在通知栏上的应用1.2 RemoteViews在桌面小部件的应用1.3 PendingIntent2 RemoteViews内部机制2.1 RemoteViews内部机制概述2.2 RemoteViews内部机制源码分析3 RemoteViews的意义RemoteViews 是一种远程View,它和远程Service是一样的,...原创 2019-11-12 10:41:42 · 1237 阅读 · 0 评论 -
Android Window和WindowManager
文章目录1 Window和WindowManager2 Window的内部机制2.1 Window的添加过程2.2 Window的删除过程2.3 Window的更新过程2.4 总结操作Window的流程走向3 Window的创建过程3.1 Activity的Window创建过程3.2 Dialog的Window创建过程3.3 Toast的Window创建过程Window 是一个抽象类,它的具体实...原创 2019-11-02 22:17:07 · 578 阅读 · 0 评论 -
HTTP/HTTPS详解
文章目录1 了解Web和网络基础1. 网络基础TCP/IP1.1.1 TCP/IP的分层管理1.1.2 TCP/IP通信传输流1.2 与HTTP关系密切大的协议:IP、TCP和DNS1.2.1 负责传输的IP协议1.2.2 确保可靠性的TCP协议1.3 负责域名解析的DNS服务1.4 各种协议与HTTP协议的关系1.5 URI和URL2 简单的HTTP协议2.1 通过请求和响应的交换达成通信2.2...原创 2019-11-26 09:24:41 · 1357 阅读 · 0 评论 -
Android Handler
1 Handler的组成部分MessageQueue:消息队列,内部采用单链表的数据结构存储消息列表,只有存储消息的功能,不具备处理消息功能。Looper:主线程默认有创建,如果要在其他线程中使用Handler,需要创建Looper,Looper是和被创建的Handler同处在一个线程中的;Looper可以通过ThreadLocal获取到,消息处理由Looper执行。2 Hand...原创 2020-12-11 23:01:51 · 467 阅读 · 0 评论 -
Android AsyncTask的工作原理
1 AsyncTask的基本使用public abstract class AsyncTask<Params, Progress, Result> Params:启动任务执行的输入参数,如http请求的urlProgress:后台任务执行的百分比Result:后台执行任务最终返回的结果类型对应参数不处理设置成Voidpublic class DownLoa...原创 2019-06-22 00:01:02 · 217 阅读 · 0 评论 -
IPC机制
文章目录1 Android IPC简介2 Android中的多进程模式3 多进程模式的运行机制4 IPC基础概念介绍4.1 Serializable接口4.2 Parcelable接口4.3 Parcelable和Serializable的选择4.4. Binder1 Android IPC简介任何一个操作系统都有相应的IPC机制,比如Windows上可以通过剪贴板、管道和邮槽等来进行进程间通...原创 2019-11-02 22:17:18 · 1126 阅读 · 0 评论 -
OkHttp 源码解析
1 OkHttp的使用OkHttp的基本使用参考我另外一篇文章:https://blog.csdn.net/qq_31339141/article/details/901719262 OkHttp请求解析原创 2021-01-10 15:54:29 · 1539 阅读 · 2 评论