Android
文章平均质量分 83
敖森迪
保持情怀。
展开
-
ARouter原理学习记录
前言春节后的第一篇分享,工作状态也慢慢找回来。本文将给大家带来的分享是ARouter的的原理介绍,通过了解它的原理,我们可以知道它是如何支持组件化和不互相依赖的模块间进行调用或者页面的跳转。正文ARouter介绍ARouter是阿里开源的一个用于进行组件化的路由框架,它可以帮助互不依赖的组件间进行页面跳转和服务调用。ARouter使用添加依赖:android { //... defaultConfig { kapt { arguments {原创 2022-02-14 23:55:22 · 1731 阅读 · 0 评论 -
Binder原理学习记录
本文主要对Binder的理解以及对Binder原理进行一个解析。原创 2022-01-22 22:32:46 · 3865 阅读 · 2 评论 -
APP的启动流程梳理
前言2022年的第一篇分享文章,整整一周,利用晚上下班时间梳理了桌面点击APP到打开的流程,可以说看似简简单单的一个操作,里边的过程相当复杂,各种进程间通信等等,下面我们一起看看整个流程是怎么样的。正文我们先通过一张图来看整个流程的一个概览:startActivity桌面点击app到打开,涉及了三个进程,分别如下:Launcher进程:它是一个Activity,可以把桌面看成是一个app,里边有多个啊、其他app的入口,当点击app图标时,就会去启动对应的app,并且跳转至页面。System原创 2022-01-08 22:57:43 · 3570 阅读 · 2 评论 -
Handler原理学习
前言Handler可以说是老生常谈了,因为它在整个Android的系统中是非常重要的一部分,学习它的原理是很有必要的。本文带来的分享是对Handler原理的全面解析,相信对日常的开发和面试会有很大的帮助,下面我们一起看看它的原理。正文在讲解Handler原理之前,我们先通过一张图片看看它的整个流程:当然,我们接下来所讲的Handler原理,不仅仅是Handler本身,还包括MessageQueue、Looper等类。Handler的作用在日常开发中,我们很多时候需要切换线程去做某件事情,比如在原创 2021-09-20 22:52:50 · 386 阅读 · 1 评论 -
屏幕刷新机制与Choreographer的工作原理
前言2021的进度已过50%,不知大家的小目标是否已经也到达了50%了,如果没有的话,还有2021的下一个50%。本文将给大家带来Android的屏幕刷新机制的介绍,同时通过Choreographer的源码了解它的工作原理。正文刷新率:代表一秒内屏幕刷新的次数,大部分手机的刷新率为60Hz,即一秒刷新60次,所以大概就是16.6ms刷新一次,这个是由硬件的参数决定的。帧率:相信开发客户端的同学都听说过FPS,也就是帧率。帧率代表一秒内绘制的帧数,当某个页面或者某个操作的帧率比较低时,也就是出现丢帧的原创 2021-07-03 12:15:34 · 560 阅读 · 1 评论 -
EpoxyRecyclerView的简单使用与源码分析
前言EpoxyRecyclerView很好地支持列表中有多种布局类型,让我们在使用的过程无需去关注ViewType,而是直接为每个类型定义对应的Model就可以了。它会自动为我们做了差分,还提高了的性能。EpoxyRecyclerView的Github地址:https://github.com/airbnb/epoxyEpoxyRecyclerView的使用添加依赖:在app的bu...原创 2019-10-12 18:50:27 · 1667 阅读 · 0 评论 -
OpenGL ES 2.0学习(一)入门知识点
前言 一个多月前开始学习Android OpenGL ES,起初是因为需要做滤镜,然后慢慢发现很有趣。但是自己感觉学起来并没有想象那么容易,主要涉及太多的转换,还有着色器语言等,但它确实强大,可以做一些滤镜,很炫的3D效果/全景等。目前自己还处于入门阶段。OpenGL ESOpenGL ES 为OpenGL嵌入式系统,是一个适用于嵌入式系统的二维或者三维的图形库是桌面版O...原创 2018-08-30 21:04:01 · 785 阅读 · 0 评论 -
自定义一个很舒服的视频录制按钮
前言 最近开发了相机的相关功能,其中包括了视频的录制。当做好录制功能时,学长就要求要把录制的按钮改成比较友好和美观,过后按照了提出的效果自定义了这个录制按钮。今天分享给大家。...原创 2018-07-21 01:09:57 · 1273 阅读 · 0 评论 -
Architecture Component—Paging 的使用及源码阅读
Paging Libray简单来说,Paging Libary用于数据的加载,然后显示到UI上。它是很有趣并且很方便于我们的一个库,比如在后台线程加载好数据,然后在主线程中将数据展示出来。实现了数据的加载处理与UI分离开,并且可以在用户不知不觉中加载更多的数据,使之能够无限的加载更多,不用待到以后滑到底采取加载更多。当然,它的功能不止上述。Paging Libray的相关类Da...原创 2018-07-03 21:33:39 · 1036 阅读 · 0 评论 -
OkHttp使用与源码学习(一)
前言 从开始使用OkHttp已经很久了,它是一个很nice的网络框架,其功能强大,可进行失败重连,在连接中出问题时自动恢复。最近在复习的时候学了它的源码,以下主要是写它的使用和源码学习。使用GET请求//异步请求OkHttpClient client=new OkHttpClient();Request request=new Request.Builder()...原创 2018-05-03 22:25:51 · 365 阅读 · 1 评论 -
ThreadLocal的使用和实现原理
概述 ThreadLocal是一个将指定值储存到指定线程的类。简单的讲ThreadLocal可以指定储存数据类型,然后在不同线程中设置某个值,这个值在其他线程是不可以获取到的,只能在本线程才能获取到。平常中很少使用到ThreadLocal,但在也不少见到,比如Looper类中就有使用到它。使用ThreadLocal的使用不难,就是先创建ThreadLocal对象并指定要存储的...原创 2018-03-01 14:32:28 · 558 阅读 · 0 评论 -
基于RecyclerView实现侧滑删除
列表的条目侧滑删除可以说是最熟悉不过的了,它的实现方法也有很多,这次我给大家带来的是基于RecyclerView实现的。关于RecyclerView的使用在本文中没有提及,可以看看这篇:RecyclerView的使用先看看效果图: 大概思路为:重写RecyclerView的onTochEvent方法点击时,获取点击的位置,根据位置(坐标)去获取点击的条目对应的View,顺...原创 2018-03-02 22:19:53 · 1085 阅读 · 0 评论 -
RxJava的初步使用(一)
RxJava初步使用原创 2017-03-31 22:15:05 · 847 阅读 · 0 评论 -
仿QQ聊天界面侧滑
侧滑原创 2017-04-18 21:03:29 · 719 阅读 · 0 评论 -
从生成代码来学习Dagger2的注入过程
前言 用过的同学都会知道,Dagger2用于去除依赖,通过注解便可以为我们生成创建对象的代码。通过apt插件在编译阶段生成注入代码,反射只在编译阶段使用,在应用运行阶段没有涉及到注解反射。下面直接进入生成代码的分析,这也是我最近对生成代码学习的记录。当我们使用Dagger编写好代码后,build一下,只要依赖关系没问题,那么就可以在app/build/generated/source...原创 2018-09-04 20:56:47 · 294 阅读 · 0 评论 -
Retrofit源码学习
前言 学习Retrofit的源码已经有一段时间了,最近又翻了一遍,然后总结了一下。它里面用到了很多个设计模式,有工厂模式、代理模式、适配器模式等。Create方法mRetorfit.create(Service.clss)create方法的返回语句如下: return (T) Proxy.newProxyInstance(service.getClassLoad...原创 2018-09-05 23:55:27 · 260 阅读 · 0 评论 -
重温RxJava(使用Kotlin编写)
前言 使用RxJava挺久的了,但是这后面接触的少,所以有一些淡忘了,于是今天再一次总结了一下,刚好最近都在用Kotlin,所以以下代码是使用Kotlin编写的。RxJava可以说是这样的:异步:可以很方便地切换线程简洁:在复杂的逻辑中保持代码简洁基本使用1.创建一个ObserveronNext:观察数据onError:事件队列失败调用的方法onCom...原创 2018-09-15 23:41:06 · 3028 阅读 · 0 评论 -
浅谈Android动画(二)
动画的进一步使用原创 2017-11-11 21:59:54 · 397 阅读 · 0 评论 -
探索组件化框架CC原理
前言CC采用组件总线的方案,可以让你在对老项目进行组件化时不需要一下子拆分成一个个组件,反而这是一个渐进的过程,也就是文档所说的渐进式组件化。既然它这么优秀,那我们在使用它时,学下它的原理应该会有很多的收获。CC的项目地址:https://github.com/luckybilly/CCCC的文档地址:https://qibilly.com/CC-website文中的图片出自它的文档地址。...原创 2019-08-10 09:52:40 · 853 阅读 · 2 评论 -
组件化之路
前言从之前就一直听说对应用进行组件化,很是火热,也出现了很多组件化方案的开源库。于是查阅了很多的学习资料,看了几个开源的组件化实战例子与组件化方案的开源库,总结后尝试去对之前做过的一个项目进行组件化,也是对学习到的进行实践与检验。在实践的过程中很感谢板神对我的指导。开始什么是组件化?组件:可以想象成一辆车,车由车轮、发动机、方向盘等组成,这些物件可以认为是组件。组件化是指解耦复杂系...原创 2019-07-07 15:12:24 · 847 阅读 · 0 评论 -
EventBus源码学习
前言之前使用EventBus不多,所以也没有比较好的去学习它,后来使用得比较频繁,而且感觉很好用,所以对它的使用进一步学习外,最近还对它的实现进行学习。EventBus的创建EventBus采用单例和Builder模式对本身进行创建:public static EventBus getDefault() { if (defaultInstance == null) { ...原创 2019-04-19 19:24:57 · 396 阅读 · 0 评论 -
Activity将View添加到Window的过程
前言在开发的时候,我们经常会因为跳转到另外的界面而去启动Activity,然后被启动的Activity就会呈现在屏幕上。实际启动的过程很复杂,涉及IPC、Window 的添加等等。本文章将分享Activity的View被添加到Window的过程。正文在Activity的启动过程中,会调用ActivityThread还会调用handleLaunchActivity去开始Activity的生命周...原创 2019-02-27 10:14:30 · 457 阅读 · 0 评论 -
OkHttp源码学习(二)拦截器
前言OkHttp同步或者异步都会通过getResponseWithInterceptorChain方法获取响应,此方法通过一系列的拦截器进行处理。这些拦截器分别有:RetryAndFollowUpInterceptor(重试或者重连)、BridgeInterceptor(request和response的转换)、 CacheInterceptor(缓存)、ConnectIntercepto...原创 2018-11-30 20:39:55 · 257 阅读 · 0 评论 -
RecyclerView的进阶使用(分割线、拖拽、动画)
前言使用RecyclerView已经很久了,它相对于ListView和GridView方便很多,使用LayoutManager等类可以给它的使用带来很大的便利。但是后面发现,使用RecyclerView的功能只是那么一小点,也就是都它的基本使用,所以最近对它进一步学习和使用。添加分割线RecyclerView默认是没有为我们添加分割线的,这得需要通过自己去实现,虽然看起来麻烦,但是反过来...原创 2018-11-08 21:41:42 · 580 阅读 · 0 评论 -
RecyclerView的复用与回收机制
前言最近学习了RecyclerView的进阶使用,同时也学习了它的缓存机制,以下是通过看它相应的源码去了解它的获取View(ViewHolder)缓存的过程。寻找获取缓存起点获取缓存的起点为绘制流程的onLayout方法,然后追寻相关方法:dispatchLayout()—>dispatchLayoutStep1()—>mLayout.onLayoutChildren(mRe...原创 2018-11-10 20:02:49 · 1726 阅读 · 0 评论 -
视差特效(仿微信朋友圈)
模仿微信朋友圈的背景图效果原创 2017-04-13 19:04:36 · 573 阅读 · 0 评论 -
对GreenDao的使用
GreeDao的使用原创 2017-04-12 08:58:42 · 1137 阅读 · 0 评论 -
Retrofit的简单使用
Retrofit的简单使用原创 2017-03-27 20:55:14 · 337 阅读 · 0 评论 -
View的工作流程-对MeasureSpec认识
MeasureSpec的认识原创 2017-09-13 15:24:15 · 390 阅读 · 0 评论 -
View的工作流程-measure、layout、draw三大流程
View的三大工作流程原创 2017-09-13 16:44:28 · 550 阅读 · 0 评论 -
Android的消息机制(原理描述篇)
Android的消息机制原创 2017-09-27 22:05:44 · 506 阅读 · 0 评论 -
View的事件分发机制
View的事件分发原创 2017-10-13 23:05:30 · 287 阅读 · 0 评论 -
浅谈Android动画(一)
Android的动画 View动画 帧动画 属性动画原创 2017-10-30 22:55:37 · 332 阅读 · 0 评论 -
AsyncTask之使用与源码分析
概念 AsyncTask,异步任务原创 2017-12-26 23:09:51 · 294 阅读 · 0 评论 -
Android的消息机制(源码篇)
大致流程 将当前线程转成Looper线程;Handler发送消息,插到MessageQueue(消息队列);looper进入循环,如果在消息队列中拿到Message就交给Handler,如果消息队列中没有消息则阻塞。线程的分类及通信我们都比较明白线程可分为主线程和工作线程,还有线程之间的通信分为主线程与工作线程、工作线程与工作线程(比较少听到)。相关的对象在上一篇原创 2017-12-27 23:47:32 · 250 阅读 · 0 评论 -
Volley源码学习(处理请求)
Volley的流程原创 2017-12-28 22:50:39 · 235 阅读 · 0 评论 -
AIDL的使用
AIDL是进程间通信的一种方式,从以前学习AIDL后,很少用过,最近在复习了下其使用方法,以下为AIDL的使用方法,最后稍微分析了一下AIDL为我们生成的代码的逻辑使用服务端首先在main文件夹下创建名字为aidl的文件夹 2.在aidl文件夹下创建一个与java文件夹夹下一致的包结构 3.在包里面创建aidl文件,然后在里面定义方法,代码如下// PayIn原创 2018-01-14 23:00:59 · 656 阅读 · 0 评论 -
MVVM的学习
最近在学习MVVM,阅读了一些相关的文章,自己做了总结。MVVM是什么?MVVM它分为三个层:Model:数据模型,对数据进行处理View:UI展示,包括Activity、Fragment等ViewModel:View和Model之间的桥梁,处理界面逻辑,让View和Model之间进行交互。 为什么要有MVVM?现在使用的基本是MVP或是MVC,最开始觉得MVP原创 2018-01-23 22:11:58 · 394 阅读 · 0 评论 -
Window和WindowManager
WindowWindowManager原创 2017-09-09 15:34:44 · 399 阅读 · 0 评论 -
Activity的工作过程
基于api25Activity工作过程分析原创 2017-09-06 19:18:31 · 332 阅读 · 0 评论