
android
文章平均质量分 78
白嫩豆腐
努力
展开
-
Exoplayer源码解析3之解封装器解析
第一篇介绍了数据的加载流程,但是没有分析具体 数据如何解封装后,拿到需要的数据包,这里稍微介绍一下,本篇大部分代码都集中在extractor模块当中。原创 2022-09-13 00:59:11 · 1001 阅读 · 0 评论 -
Exoplayer简介
Exoplayer是一个android平台的播放器,支持格式比android系统的mediaplayer更好,确定性更好,mediaplayer是可以进行厂家定制的,各平台一致性比较差,这里简单介绍一下Exoplayer的最基础的使用接口,方便之后阅读源码。原创 2022-09-05 23:25:08 · 5700 阅读 · 0 评论 -
android SurfaceFligure
前言前一篇文章介绍了UI显示的主要类测创建,关于显示原理本来计划再这一篇介绍的,但是android 8之后的ui显示变得非常复杂,再一两篇内不太容易介绍清楚,这篇文章只介绍一个大概流程。正文最关键的是服务端的BufferQueueProducer,这个用来管理显存数据,通过共享内存,来方便APP填充内容,这个东西非常复杂,显存是通过hal层封装的实现的,可以便于分配内存管理,通过mapper模块内存映射。这些代码都需要阅读hal层代码。得到的数据显存数据保存再layer中,因为surfacefli原创 2021-06-07 00:21:43 · 652 阅读 · 5 评论 -
SurfaceFlinger的渲染客户端Surface初始化
关于SurfaceFlinger他大部分都是三层架构SurfaceFlinger是针对整个系统,用户类本地binder服务端binderComposerServiceBpSurfaceComposerSurfaceFlingerSurfaceComposerClientBpSurfaceComposerClientClientSurfaceSurfaceControlIBinderLayer这里数据结构三层,是方便管理,一个系统只有一个Surf原创 2021-05-27 01:10:24 · 494 阅读 · 0 评论 -
andoridUI显示
前言Android系统大部分程序都是基于activity来实现的,所以我们UI显示都是通过xml文件生成,通过setcontetview来把页面交给phonewidow,最终交给SurfaceFlinger。因为我们相了解一下SurfaceFlinger,直接阅读activity觉得工作量比较大,也没必要,我们可以自己参考BootAnimation写一个简单的程序,作为阅读AndroidUI显示的小测试程序。正文我们自己写的程序主要包括一个main程序,代码如下:int main(){ s原创 2021-05-20 23:40:12 · 255 阅读 · 3 评论 -
android11源码编译
前言Android编译再国内其实总是会遇到各种奇怪的问题,但是想观察一下Android源码,不编译一下代码总是少点什么,虽然大部分开发系统的开发者都有开发板,所以会有芯片厂商提供的系统,但是每次都要刷机,感觉不如虚拟机好玩,当前大部分文档都是编译arm系统,大部分虚拟机无法运行,这里介绍一下内核以及aosp的编译过程正文目的是编译Android 11 源码,需要的配置是16+g内存,以及300g硬盘,系统ubunut下载Android系统代码(aosp)Android系统源码下载其实比较简单,具体原创 2021-05-16 20:36:44 · 2209 阅读 · 0 评论 -
BInder工作流程
前言关于binder简单使用案之前文章有所介绍,不过这篇文章只是大概介绍一下binder的工作流程正文一个binder通讯其实包括四部分内容:服务端客户端binder驱动serviceManger服务端需要注册,然后等待客户端连接,这里是业务需求,具体实现其实需要binder驱动以及ServiceManger,如果只针对通讯,ServiceManger是非必要的,不过为了服务管理以及分层(内核层不要管理framework层数据)所以产生了Servicemanger。而ServiceMan原创 2021-05-03 01:26:36 · 1558 阅读 · 0 评论 -
BInder
前言Binder是Android核心中的核心。Android各种服务都是通过Binder来实现进程间通讯的,我计划分三部分大概剖析一下binder的具体原理。Binder的具体使用案例源码分析大概流程实现最简单的binder正文binder是分为两部分的,一部分是服务端,通过线程池,等待其他进程通过binder驱动通知服务。另一部分是客户端,主要通过mmap函数,得到内核的内存映射区,写入数据,然后通知服务端。一个最简单的服务端如下:主要操作流程大概是Bnservice向binder原创 2021-05-02 02:00:19 · 1022 阅读 · 0 评论 -
SeekBar源码分析
前言稍微读一下Seekbar的源码,了解一下具体实现。正文seekbar的父控件是ProgressBar,这个比较简单,大概基本就是一个把一个drawable在ondraw中给draw一下,onmesure则基本上是根据maxheight或者minheight来确定大小。无论是drawable或者是maxheight、minheight都是通过style中定义的,我们看下系统的一个styl...原创 2019-10-22 11:21:20 · 536 阅读 · 0 评论 -
Fragment生命周期源码分析
前言上一篇介绍了Fragment的新建过程,这一篇我们介绍一下Fragment的生命周期源码的过程,这里我们假设的情景是fragment已经添加到页面上了,通过上一篇我们知道Fragment其实就是activity的一个成员变量,用来提供一个view,所以Fragment的生命周期肯定是activity控制的(其实activitymanageservice也可以控制,但是完全没必要那么复杂),所...原创 2019-04-02 00:06:46 · 566 阅读 · 3 评论 -
手写最简handler
前言最近阅读Android 源代码,就想着写个最简单的Android线程间通讯的方案。这里主要是还粘贴写的代码正文循环等待的核心loop函数:looper.javapublic class Looper { private long ptr; private Message m; public Looper(){ ptr = Init(); ...原创 2019-04-05 20:00:37 · 197 阅读 · 0 评论 -
Android 线程间通讯机制
前言之前研究Fragment遇到进程间通讯的一些东东,趁着最近有空,就在重新研究一下Android相关的代码。并且这些代码确实非常简单。之前研究过,但是遇到一些问题就没深究,这次我们就彻底搞懂他吧正文最简单的使用当然是在activity的oncreat中直接使用:Handler handler = new Handler();handler.post(new runable{ Log....原创 2019-04-04 15:19:58 · 273 阅读 · 0 评论 -
fragment完全解读
前言最近看Android5.0以后提供的控件,好多新特性,竟然发现我完全无法接受原创 2019-03-16 02:47:36 · 686 阅读 · 0 评论 -
okhttp源码解析
##前言http请求的功能应该是很简单,只是为了鲁棒性和性能需要写很多的代码,发现okhttp还是挺复杂的,但是我们这里还是要好好的搞定他。##正文我们从最简单的使用开始OkHttpClient client = new OkHttpClient();Request request = new Request.Builder() .url(url) .bu...原创 2018-10-16 18:31:25 · 123 阅读 · 0 评论 -
uml用例
1.0前言uml主要模型包括 - 业务用例模型 - 概念用力模型 - 系统用例模型 - 领域用例模型 - 分析模型 - 软件框架和架构模型 - 设计模型 - 组件模型 - 实施模型 2.0基础用例模型2.1用例模型用例模型是系统既定功能以及系统环境的模型,他可以作为客户和开发人员之间的契约。用例是贯穿真个系统开发的一条主线。2.2业务用例模型业务用例模型位于同意过原创 2016-03-02 15:29:44 · 513 阅读 · 0 评论 -
AsyncQueryHandler
在阅读本文前请务必对android的handler、message、looper、的关系具有相当的认识。这里强烈推荐一位大神的的博客: Android异步消息处理机制详解及源码分析。这里我就默认你已近了解android的message消息传递机制了。那么我们就开始研究我们的AsyncQueryHandler 研究类一般都是先从构造函数进入。那么我们先来看我们构造函数public AsyncQue原创 2016-03-02 15:38:33 · 470 阅读 · 1 评论 -
Timer源码分析
前言Timer是个轻量级的定时控件,一般项目中不太常见,对于普通业务一般可以用handler或者alarmmaager来实现,但是最近研究thread。就看了下Timer类。忽然发现设计也是很优秀的。这里就对这个控件进行了分析原创 2016-04-01 16:48:18 · 1042 阅读 · 0 评论 -
PendingIntent的解读。
PendingIntent的简单讲解。原创 2016-03-22 17:07:35 · 492 阅读 · 0 评论 -
Dialog源码分析
1 前言以前开始接触编码最开始纠结的一个问题就是Dialog,当时感觉好混乱啊!这次就研究研究Dialog的问题。相对于Toast来说,Dialog是一种比较重要的提示。对于我们来说第一反应来说是非常简单,但是我们思考他的实现的原理。他是在PhoneWindow上添加一个界面忽然就感觉不是那么简单了,这里我们一起来看看到底他是如何实现的。原创 2016-04-07 21:06:38 · 1290 阅读 · 0 评论 -
SQLiteOpenHelper使用及源码分析
最近研究数据库,就写下这个简单的类,跟大家分享下,加深了解SQLiteOpenHelper。SQLiteOpenHelper这个类是帮助创建数据库的,这里就好好研究这个类。原创 2016-04-15 17:44:09 · 967 阅读 · 0 评论 -
关于Android串口通讯总结
前言这几天完了串口,暂时还没搞懂这是啥玩意,因为目前底层到底如何通讯的我还不知道,不过这里先总结一下这两天的收获。正文现在我们开始我们最主要的问题,因为串口作为底层实现,linux把设备作为文件,并且串口文件在dev目录下的,并且现在都是通过c代码来打开的(貌似Java无法设置波特率啥的,这个东西c代码我暂时也搞不懂。并且我们cat这个文件的时候是得不到文件。以后我有机会研究研究,说不定可以实现呢。原创 2016-10-21 19:05:36 · 2351 阅读 · 0 评论 -
关于Android的轻指针
总结下Android的弱指针原创 2017-03-07 18:04:29 · 286 阅读 · 0 评论 -
Android 系统编译流程
前言老早都想了解android到底是如何从代码到系统安装包的,可是因为技术太菜。最近恰好看到别人写如何构建系统,这里整理下流程,并且学习一些基础的知识。原创 2017-04-08 00:05:26 · 530 阅读 · 0 评论 -
camera2中的CameraCharacteristics的原理
前言在看Android中camera2的时候,忽然遇到一个camera的配置的数据类型,总是感觉好奇怪,这个东西比较简单但是如果不细看,貌似确实还是比较复杂,这里稍微解释下吧,原创 2017-03-17 10:51:00 · 4109 阅读 · 2 评论 -
gson完全解读
##前言网络请求框架一直没搞,这个东西一直是我的一个遗憾。最近用到这里我们好好的研究下,本篇博客主要研究一下gson相关的东西。##正文gson是什么:A Java serialization/deserialization library to convert Java Objects into JSON and back 发现看不懂,只能才懂大概意思是就是把java对象和JSON相...原创 2018-09-27 00:20:19 · 1475 阅读 · 0 评论 -
完全分析okhttp职责链职责
前言之前分析了okhttp的流程,具体的真正的http的请求没做,这里我具体分析到底是如何做到从一个字符串的地址请求到一个完整的html文档的。正文这里我们分析最简单的情况是http请求,而不是加密的https通讯协议。如果想读懂这个代码最好要了解整个okhttp的流程,可以读上一篇文章。首先是RetryAndFollowUpInterceptor这个大概是处理异常,但是有个最关键的环节...原创 2018-10-19 00:11:35 · 192 阅读 · 0 评论