自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

chidh的博客

工作心得和开发踩坑记录

  • 博客(49)
  • 资源 (5)
  • 收藏
  • 关注

原创 OkOne-基于okhttp的网络性能优化框架

文章目录简介痛点解决集成效果实例复用连接复用更多功能关闭开关打印日志单独创建不受控的OkHttpClient实例GitHub地址简介OkOne是一款基于okhttp库的网络性能优化框架,但不同于其他框架对okhttp的使用调用进行封装,而是从不一样的方面,以对开发者无侵入的方式进行优化。痛点在APP项目中可能会包含多个组件模块,或依赖多个三方库,甚至部门分不同团队开发各自业务模块AAR供APP集成。其中可能都有使用到okhttp框架进行网络请求,不同的组件模块和三方库中各自创建OkHttpClien

2020-12-20 11:46:08 1327 2

原创 从零构建AR APP新手教程【Android篇】(4)-APP交互逻辑及嵌入调用Unity

学习AR应用开发有一段时间了,自己开发了一款简单的APP来练手,在这里分享给大家。APP链接:https://www.coolapk.com/apk/173761前面介绍了Unity3D部分的实现,现在就来介绍Android原生部分的编码实现。1.APP基础UI框架及交互逻辑首页就是简单的ViewPager+Fragment,其中数据用RecyclerView展

2018-01-21 15:55:24 2340 3

原创 从零构建AR APP新手教程【U3D篇】(3)-导出Gradle工程

学习AR应用开发有一段时间了,自己开发了一款简单的APP来练手,在这里分享给大家。APP链接:https://www.coolapk.com/apk/173761《从零构建AR APP新手教程【U3D篇】(1)》《从零构建AR APP新手教程【U3D篇】(2)》本篇教程介绍如何导出Gradle工程到Android studio中。1)打开File-B

2018-01-20 23:46:29 540

原创 从零构建AR APP新手教程【U3D篇】(2)-动态修改识别目标和3D物体

学习AR应用开发有一段时间了,自己开发了一款简单的APP来练手,在这里分享给大家。APP链接:https://www.coolapk.com/apk/173761经过上一篇教程《从零构建AR APP新手教程【U3D篇】(1)》的介绍,大家已经知道如何实现简单的AR功能了,但是实际项目中经常需要根据不同的参数在场景中用不同的识别图显示不同的3D物体。接下来就带大家介绍通过脚本来实现在

2018-01-20 20:33:49 1293 2

原创 从零构建AR APP新手教程【U3D篇】(1)-项目概述、基础配置

学习AR应用开发有一段时间了,自己开发了一款简单的APP来练手,在这里分享给大家。APP链接:https://www.coolapk.com/apk/173761本篇教程针对Android开发想尝试AR开发的初学者,需要具备Android开发经验和入门U3D基础。该APP包含Android原生开发和unity3D两部分,AR功能使用vuforia SDK。1.配置vuforiaVu

2018-01-19 16:05:16 3559 3

原创 小记多lib module上传JitPack

多lib module发布AAR当项目工程中包含不止一个lib module,或同时包含gradle plugin module的场景,打包SDK发布到JitPack仓库:配置android-maven-gradle-plugin同单lib module配置一样,在项目根目录build.gradle中添加依赖。dependencies { classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'}为每个要发布

2021-04-25 16:07:30 690

原创 从零手写实现简易版MMKV(一)

文章目录@[toc]概述预期目标技术设计编码实现SDK初始化EZKV实例初始化数据写入写入int类型value写入String类型value数据重整和文件扩容数据读取读取int类型value读取string类型value总结概述MMKV是支持多平台的高性能键值对持久化存储组件,其核心原理是利用mmap内存映射文件,关于它的详细介绍和更多原理参看MMKV开源git地址。从零开始手写(其实是抄写-.-!)简易版MMKV(另起名叫EZKV),即先只关注最核心的功能(实现最小化系统),再从主干开枝散叶,逐步进

2021-04-20 15:11:26 817 1

原创 OkOne-如何给okhttp的请求设置优先级

文章目录前言如何设置效果演示原理剖析OkHttp请求队列源码分析OkHttp请求优先级实现分析前言当APP中有发起大量服务端接口调用请求时,或许有人希望能够指定某些请求任务的优先级较高,可以优先发起请求。或者指定其为低优先级,在靠后的位置再发起请求。那么如果可以给这些请求设置优先级,使之能够按优先级顺序执行的话就很方便了。不过遗憾的是,OkHttp库不支持开发者给Request设置优先级。若要支持按优先级调度,则需要业务方自行维护请求任务队列,然后通过Call#execute方法依次执行请求任务,但该

2021-01-23 15:22:01 1474

原创 OkOne-高级功能之OkHttp预建连以及原理剖析

简介OkOne是一款基于okhttp库的网络性能优化框架,但不同于其他框架对okhttp的使用调用进行封装,而是从不一样的方面,以对开发者无侵入的方式进行优化。更多介绍见《OkOne-基于okhttp的网络性能优化框架》GitHub地址https://github.com/chidehang/OkOne预建连开发者可以在合适的时机提前建立连接,若连接成功,则会将其添加进okhttp连接池。OkOne.preBuildConnection(okHttpClient, url, new PreCo

2020-12-24 21:44:47 1019

原创 滴滴插件化框架学习笔记之virtualapk-gradle-plugin

文章目录前言宿主Gradle PluginVAHostPlugingenerateDependenciesbackupHostRbackupProguardMapping插件Gradle PluginVAPluginbeforeCreateAndroidTasksVATaskHookerManagerPrepareDependenciesHookerMergeManifestsHookerProcessResourcesHookerMergeAssetsHookerStripClassAndResTrans

2020-07-04 22:07:24 1583 1

原创 AOP应用场景实战-基于AspectJX开发效能提升工具

文章目录前言场景实战日志打印痛点解决定义注解定义切面和切入点使用示例线程切换痛点解决定义注解定义切面和切入点线程切换方法使用示例线程名称检测痛点解决定义切面和切入点线程名称检测使用示例工信部检查痛点解决拦截API直接调用拦截API反射调用拦截动态加载的调用使用示例尾声前言关于AOP思想和AspectJX框架大家都耳熟能详,AspectJ为开发者提供了实现AOP的基础能力,可以通过它来实现符合各自业务需求的功能。这里借助AspectJX框架来实现效能提升相关的一些有意思的功能,AspectJX框架的配置

2020-06-20 14:48:31 821

原创 Service启动流程总结-bind和unbind

文章目录回顾概述基本使用源码探究bind过程Caller发起bindIServiceConnection说明AMS处理bind请求Service处理bind请求AMS发布ServiceCaller处理连接回调unbind过程总结回顾Service启动系列总结:《Service启动流程总结-start和stop service》概述在开发中我们使用Context#bindService和Context#unbindService来绑定和解绑Service,通过绑定来启动Service,可以方便的调用

2020-06-13 17:41:58 1879

原创 Service启动流程总结-start和stop service

文章目录回顾概述源码探究startService过程onCreate阶段onStartCommand阶段Service超时机制设置超时移除超时触发超时当目标Service进程未启动时stopService过程总结回顾Activity启动系列总结:Activity启动流程总结-ActivityThreadActivity启动流程总结-生命周期Activity启动流程总结-超时判定机制在Activity启动流程中对APP进程和ActivityManagerService的交互过程以及应用进程启动初始

2020-06-07 18:38:09 5038

原创 事件分发机制-InputEvent进入ViewGroup之前的流转

文章目录前言源码探究事件监听注册InputChannel的初始化打开InputChannelAPP侧InputChannelIMS侧InputChannelInputEventReceiver的初始化小结输入事件接收小结应用窗口事件派发队列分发InputStageDecorView派发过程小结尾声前言系列总结回顾:ViewGroup事件分发总结-TouchTargetViewGroup事件分发总结-多点触摸事件拆分关于Android触摸事件分发机制,在日常应用层开发工作中最常接触的是ViewGro

2020-05-30 14:22:08 348

原创 LeakCanary2.3 核心原理浅析

概述LeakCanary是Android开发中常用的用来检测内存泄漏的框架,它能够帮助开发者快速发现是否发生内存泄漏,并可视化的给予提示。这里基于LeakCanary 2.3版本进行分析。只需要在工程中进行简单的集成配置,就能自动对Activity、Fragment、fragment View进行自动检测。也可以通过ObjectWatcher#watch方法对指定对象进行检测。dependencies { // debugImplementation because LeakCanary sho

2020-05-18 17:11:41 1938 1

原创 AndroidX RecyclerView实践-手写卡片式布局

文章目录前言功能拆解代码实现准备工作添加依赖MOCK数据创建适配器卡片布局实现思路分析初始配置自定义LayoutManager手势滑动移除实现思路分析自定义ItemTouchHelper.SimpleCallback点击按钮卡片飞出动画实现思路分析按钮点击监听自定义SimpleItemAnimator尾声前言RecyclerView系列总结:《AndroidX RecyclerView总结-测量布局》《AndroidX RecyclerView总结-Recycler》《AndroidX Recyc

2020-05-15 20:02:09 1238

原创 AndroidX RecyclerView总结-ItemTouchHelper

概述RecyclerView不仅实现在有限窗口显示大数据集,还支持对其中的item视图进行Swipe(轻扫)和Drag(拖拽)操作,这可以借助ItemTouchHelper辅助类轻松实现。基本使用关键代码:// 1.创建ItemTouchHelper.Callback,实现回调方法ItemTouchHelper.Callback callback = new ItemTouchHelpe...

2020-05-01 13:41:31 1510

原创 AndroidX RecyclerView总结-滑动处理

文章目录概述源码探究RecyclerView中的处理onInterceptTouchEvent滑动状态onTouchEventscrollStepLinearLayoutManager中的处理updateLayoutStatefilloffsetChildren总结概述RecyclerView作为一个灵活的在有限窗口显示大量数据集的视图组件,继承自ViewGroup,需要处理触摸事件产生时子V...

2020-04-24 11:30:05 2464

原创 AndroidX RecyclerView总结-Recycler

概述通过博文记录RecyclerView的源码学习过程有助于巩固自己的记忆和加深整体实现机制的理解。接《AndroidX RecyclerView总结-测量布局》,其中LinearLayoutManager在布局时,通过Recycler来获取ViewHolder中的itemView进行添加和布局。众所周知,Recycler负责缓存ViewHolder以供复用,这里通过追踪源码看看Recyc...

2020-04-08 14:25:32 1769

原创 AndroidX RecyclerView总结-测量布局

文章目录概述源码探究测量阶段布局阶段dispatchLayoutdispatchLayoutStep1dispatchLayoutStep2dispatchLayoutStep3LinearLayoutManager总结概述通过博文记录RecyclerView的源码学习过程有助于巩固自己的记忆和加深整体实现机制的理解。RecyclerView中通过Adapter将数据源各item转换成各...

2020-04-06 22:31:13 963

原创 AndroidX Fragment探究-状态保存和恢复

文章目录概述源码探究状态保存状态恢复commit & commitAllowingStateLoss总结概述我们知道Activity提供了onSaveInstanceState和onRestoreInstanceState回调方法用于状态保存和恢复,同样FragmentActivity和Fragment也支持状态保存和恢复,FragmentActivity会在适当的时机,通过Fragm...

2020-03-28 13:25:46 2622

原创 AndroidX Fragment探究-生命周期

概述Fragment的生命周期依托FragmentActivity管理调度,在FragmentActivity的各个生命周期方法回调中,会将对应生命状态派发给依附于FragmentActivity的所有Fragment。图1.Fragment 生命周期源码探究文中源码基于’androidx.fragment:fragment:1.1.0’Fragment的生命周期派发图2.Ac...

2020-03-17 21:25:04 1325

原创 AndroidX Fragment探究-事务操作

文章目录概述源码探究FragmentManager的由来FragmentControllerHostCallbacksFragmentManagerImplFragmentManagerImpl的绑定FragmentController、HostCallbacks、FragmentManagerImpl之间关系添加事务操作开启事务添加add Fragment的操作OpaddOp提交事务处理事务操作...

2020-03-15 13:28:48 2779

原创 Activity启动流程总结-超时判定机制

文章目录前言源码探究Activity pause阶段超时的设置LAUNCH_TIMEOUT_MSGPAUSE_TIMEOUT_MSGmHandler的由来超时的触发LAUNCH_TIMEOUT_MSGPAUSE_TIMEOUT_MSG超时的取消Application launch阶段超时的设置超时的触发超时的取消Activity launch阶段超时的设置超时的触发超时的取消Activity st...

2020-03-07 17:46:45 2981

原创 Activity启动流程总结-生命周期

文章目录前言源码探究startActivitystartActivityAsUserstartActivityMayWaitstartActivityUncheckedresumeFocusedStackTopActivityLockedresumeTopActivityUncheckedLockedresumeTopActivityInnerLocked1.pause当前显示的Activitys...

2020-02-29 22:37:43 2623 1

原创 Activity启动流程总结-ActivityThread

文章目录前言源码探究入口函数mainattachattachApplicationbindApplicationmakeApplication总结前言对于Activity的启动流程,从事Android开发的同学都很熟悉。这里仅结合自己的理解,通过博文梳理和记录Activity启动流程关键节点,便于记忆和将来回顾。在Activity启动流程中,当要启动的Activity所在进程未创建时,A...

2020-02-22 22:33:01 889

原创 ViewGroup事件分发总结-多点触摸事件拆分

文章目录前言源码探究MotionEvent说明获取触摸点索引获取指定触摸点ID获取所有触摸点ID获取指定触摸点位置坐标拆分事件实际MotionEvent数据触摸点索引和ID关系派发过程派发目标查找执行派发dispatchTransformedTouchEvent事件拆分规则触摸点ID的移除总结前言在《ViewGroup事件分发总结-TouchTarget》中对事件派发过程中TouchTarge...

2020-02-15 18:55:47 494

原创 ViewGroup事件分发总结-TouchTarget

文章目录前言源码探究TouchTarget说明重要成员变量触摸点ID存储对象获取和回收事件分发流程派发前准备派发目标查找执行派发mFirstTouchTarget说明总结前言ViewGroup中一个完整的事件派发流程是包含一个完整的事件序列的派发,一个完整的事件序列是从ACTION_DOWN开始,ACTION_UP/ACTION_CANCEL结束。在多点触摸情况下,会出现ACTION_POI...

2020-02-15 00:20:23 1142

原创 Android常用Layout源码总结—RelativeLayout

文章目录前言RelativeLayout特点源码探究构造函数初始化属性设置兼容标记LayoutParams相对位置依赖关系图节点Node依赖图DependencyGraphonMeasure测量构建依赖关系图辅助变量参数准备水平方向依赖约束测量垂直方向依赖约束测量调整WrapContent情况下的宽高根据Gravity属性调整位置设置RelativeLayout自身的尺寸onLayout布局onD...

2020-02-09 22:03:52 564

原创 Android常用Layout源码总结—LinearLayout

文章目录前言LinearLayout特点源码探究布局属性LayoutParamsonMeasure测量开始测量准备初始参数阶段预测量阶段补充测量阶段测量尾声阶段onLayout布局onDraw绘制总结前言通过学习Android官方Layout的源码,可以帮助自己更好的理解Android的UI框架系统,了解内部便捷的封装好的API调用,有助于进行布局优化和自定义view实现等工作。这里把学习结果...

2020-02-05 11:03:43 624

原创 Android常用Layout源码总结—FrameLayout

文章目录前言FrameLayout特点源码探究构造函数LayoutParams测量onMeasure布局onLayout总结前言通过学习Android官方Layout的源码,可以帮助自己更好的理解Android的UI框架系统,了解内部便捷的封装好的API调用,有助于进行布局优化和自定义view实现等工作。这里把学习结果通过写博客进行总结,便于记忆,不至于将来遗忘。本篇博客中源码基于Andr...

2020-02-02 19:38:39 744

原创 Flutter开发实践-《玩Android》APP客户端重构

项目概述使用flutter对《玩Android》APP客户端进行重构,采用flutter官方组件进行开发,实现了与kotlin开发的原生APP一致的功能模块。源码地址github地址:Wandroid-APP-lite-flutter...

2020-01-25 17:41:29 425

原创 手把手实现ScrollView+ViewPager+RecyclerView常规嵌套首页布局

文章目录前言前言

2020-01-15 00:11:03 1703 1

原创 Android Architecture Components+MVVM+Androidx+kotlin APP开发实践

文章目录概述预览源码概述借助《玩Android》网站提供的开放API开发Android客户端。项目全部迁移Androidx,使用kotlin语言开发,通过Android Architecture Components实现MVVM架构。项目中实践了ViewModel、LiveData、View Data Binding、Room、ViewPager2等组件,网络请求部分封装了Retrofit+...

2020-01-10 21:47:42 358

原创 Glide v4 源码浅析(3)-into(上)

文章目录简述源码分析ViewTarget创建Request创建Request开始加载简述Glide图片加载框架通过into方法为视图设置图片,在《Glide v4 源码浅析(2)-load方法与Registry说明》中通过load方法获得了一个RequestBuilder对象,这里将调用它的into方法传入ImageView,开始加载资源并显示在ImageView上。源码分析ViewTa...

2019-02-21 00:24:46 225

原创 Glide v4 源码浅析(4)-into(下)

文章目录简述源码分析decode和transcode简述接上部分《Glide v4 源码浅析(3)-into(上)》,继续分析获取到源数据后,对数据进行解码转换处理,并最终设置到ImageView上。源码分析decode和transcode进入decodeFromData方法:private <Data> Resource<R> decodeF

2019-02-21 00:21:37 292

原创 Glide v4 源码浅析(2)-load方法与Registry说明

文章目录简述源码分析RequestBuilder构建Registry注册表补充说明简述Glide图片加载框架通过load方法设置数据源,本篇延续《Glide v4 源码浅析(1)-with》中的例子,继续分析在load方法中做了什么操作。源码分析RequestBuilder构建Glide首先通过with方法获取RequestManager对象,然后调用RequestManager的lo...

2019-02-09 23:01:48 372

原创 Glide v4 源码浅析(1)-with

文章目录@[toc]简述源码Glide初始化简述Glide为Android平台下的图片加载框架,它的使用方法可以查看教程文档。这里从一个最简单的使用实例入手,分析glide源码调用过程(使用的glide版本为v4.8.0):Glide.with(activity) .load(imgUrl) .into(imageView);本例实现了在一个FragmentActi...

2019-02-06 22:51:49 191

原创 EventBus3实例源码浅析(下)-索引类生成

概述EventBus一般使用在调用register注册时,会通过反射去解析记录订阅方法,运行期反射比较耗费性能。3.0提供了高级用法即索引,通过注解处理器在编译期就提前解析记录订阅方法。EventBus在索引生成过程中有使用到Type、Element、JavaFileObject等接口,需要先对这些接口有一定了解。实例解析使用索引详细的配置方法可以按照官方文档http://greenrobo...

2018-10-01 17:58:25 415

原创 EventBus3实例源码浅析(上)

使用实例这里从EventBus一个简单例子着手,逐步分析:一.注册订阅在类中添加响应方法,往EventBus注册这个类。public class MyEventSubscriber { private WeakReference<Activity> mActivity; public EventSubscriber(Activity activity

2018-07-29 14:10:40 322

嵌入式系统基础

嵌入式系统基础

2013-09-22

android自学路线图

android自学路线图

2013-07-25

安卓开发入门(上)

安卓开发入门教程(上) 高清扫描版.pdf

2013-05-05

android api

安卓api 英文版 合集 android api

2013-05-05

最全ASCII对应码表-键值

最全ASCII对应码表-键值,包括所有的ASCII码对应十进制,二进制。

2012-05-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除