
Android
文章平均质量分 91
分则能成
这个作者很懒,什么都没留下…
展开
-
小记多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 · 871 阅读 · 0 评论 -
从零手写实现简易版MMKV(一)
文章目录@[toc]概述预期目标技术设计编码实现SDK初始化EZKV实例初始化数据写入写入int类型value写入String类型value数据重整和文件扩容数据读取读取int类型value读取string类型value总结概述MMKV是支持多平台的高性能键值对持久化存储组件,其核心原理是利用mmap内存映射文件,关于它的详细介绍和更多原理参看MMKV开源git地址。从零开始手写(其实是抄写-.-!)简易版MMKV(另起名叫EZKV),即先只关注最核心的功能(实现最小化系统),再从主干开枝散叶,逐步进原创 2021-04-20 15:11:26 · 1039 阅读 · 1 评论 -
OkOne-如何给okhttp的请求设置优先级
文章目录前言如何设置效果演示原理剖析OkHttp请求队列源码分析OkHttp请求优先级实现分析前言当APP中有发起大量服务端接口调用请求时,或许有人希望能够指定某些请求任务的优先级较高,可以优先发起请求。或者指定其为低优先级,在靠后的位置再发起请求。那么如果可以给这些请求设置优先级,使之能够按优先级顺序执行的话就很方便了。不过遗憾的是,OkHttp库不支持开发者给Request设置优先级。若要支持按优先级调度,则需要业务方自行维护请求任务队列,然后通过Call#execute方法依次执行请求任务,但该原创 2021-01-23 15:22:01 · 1751 阅读 · 0 评论 -
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 · 1209 阅读 · 0 评论 -
OkOne-基于okhttp的网络性能优化框架
文章目录简介痛点解决集成效果实例复用连接复用更多功能关闭开关打印日志单独创建不受控的OkHttpClient实例GitHub地址简介OkOne是一款基于okhttp库的网络性能优化框架,但不同于其他框架对okhttp的使用调用进行封装,而是从不一样的方面,以对开发者无侵入的方式进行优化。痛点在APP项目中可能会包含多个组件模块,或依赖多个三方库,甚至部门分不同团队开发各自业务模块AAR供APP集成。其中可能都有使用到okhttp框架进行网络请求,不同的组件模块和三方库中各自创建OkHttpClien原创 2020-12-20 11:46:08 · 1485 阅读 · 2 评论 -
滴滴插件化框架学习笔记之virtualapk-gradle-plugin
文章目录前言宿主Gradle PluginVAHostPlugingenerateDependenciesbackupHostRbackupProguardMapping插件Gradle PluginVAPluginbeforeCreateAndroidTasksVATaskHookerManagerPrepareDependenciesHookerMergeManifestsHookerProcessResourcesHookerMergeAssetsHookerStripClassAndResTrans原创 2020-07-04 22:07:24 · 1755 阅读 · 1 评论 -
AOP应用场景实战-基于AspectJX开发效能提升工具
文章目录前言场景实战日志打印痛点解决定义注解定义切面和切入点使用示例线程切换痛点解决定义注解定义切面和切入点线程切换方法使用示例线程名称检测痛点解决定义切面和切入点线程名称检测使用示例工信部检查痛点解决拦截API直接调用拦截API反射调用拦截动态加载的调用使用示例尾声前言关于AOP思想和AspectJX框架大家都耳熟能详,AspectJ为开发者提供了实现AOP的基础能力,可以通过它来实现符合各自业务需求的功能。这里借助AspectJX框架来实现效能提升相关的一些有意思的功能,AspectJX框架的配置原创 2020-06-20 14:48:31 · 879 阅读 · 0 评论 -
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 · 2155 阅读 · 0 评论 -
Service启动流程总结-start和stop service
文章目录回顾概述源码探究startService过程onCreate阶段onStartCommand阶段Service超时机制设置超时移除超时触发超时当目标Service进程未启动时stopService过程总结回顾Activity启动系列总结:Activity启动流程总结-ActivityThreadActivity启动流程总结-生命周期Activity启动流程总结-超时判定机制在Activity启动流程中对APP进程和ActivityManagerService的交互过程以及应用进程启动初始原创 2020-06-07 18:38:09 · 5338 阅读 · 0 评论 -
事件分发机制-InputEvent进入ViewGroup之前的流转
文章目录前言源码探究事件监听注册InputChannel的初始化打开InputChannelAPP侧InputChannelIMS侧InputChannelInputEventReceiver的初始化小结输入事件接收小结应用窗口事件派发队列分发InputStageDecorView派发过程小结尾声前言系列总结回顾:ViewGroup事件分发总结-TouchTargetViewGroup事件分发总结-多点触摸事件拆分关于Android触摸事件分发机制,在日常应用层开发工作中最常接触的是ViewGro原创 2020-05-30 14:22:08 · 403 阅读 · 0 评论 -
LeakCanary2.3 核心原理浅析
概述LeakCanary是Android开发中常用的用来检测内存泄漏的框架,它能够帮助开发者快速发现是否发生内存泄漏,并可视化的给予提示。这里基于LeakCanary 2.3版本进行分析。只需要在工程中进行简单的集成配置,就能自动对Activity、Fragment、fragment View进行自动检测。也可以通过ObjectWatcher#watch方法对指定对象进行检测。dependencies { // debugImplementation because LeakCanary sho原创 2020-05-18 17:11:41 · 2058 阅读 · 1 评论 -
AndroidX RecyclerView实践-手写卡片式布局
文章目录前言功能拆解代码实现准备工作添加依赖MOCK数据创建适配器卡片布局实现思路分析初始配置自定义LayoutManager手势滑动移除实现思路分析自定义ItemTouchHelper.SimpleCallback点击按钮卡片飞出动画实现思路分析按钮点击监听自定义SimpleItemAnimator尾声前言RecyclerView系列总结:《AndroidX RecyclerView总结-测量布局》《AndroidX RecyclerView总结-Recycler》《AndroidX Recyc原创 2020-05-15 20:02:09 · 1512 阅读 · 0 评论 -
AndroidX RecyclerView总结-ItemTouchHelper
概述RecyclerView不仅实现在有限窗口显示大数据集,还支持对其中的item视图进行Swipe(轻扫)和Drag(拖拽)操作,这可以借助ItemTouchHelper辅助类轻松实现。基本使用关键代码:// 1.创建ItemTouchHelper.Callback,实现回调方法ItemTouchHelper.Callback callback = new ItemTouchHelpe...原创 2020-05-01 13:41:31 · 1727 阅读 · 0 评论 -
AndroidX RecyclerView总结-滑动处理
文章目录概述源码探究RecyclerView中的处理onInterceptTouchEvent滑动状态onTouchEventscrollStepLinearLayoutManager中的处理updateLayoutStatefilloffsetChildren总结概述RecyclerView作为一个灵活的在有限窗口显示大量数据集的视图组件,继承自ViewGroup,需要处理触摸事件产生时子V...原创 2020-04-24 11:30:05 · 2663 阅读 · 0 评论 -
AndroidX RecyclerView总结-Recycler
概述通过博文记录RecyclerView的源码学习过程有助于巩固自己的记忆和加深整体实现机制的理解。接《AndroidX RecyclerView总结-测量布局》,其中LinearLayoutManager在布局时,通过Recycler来获取ViewHolder中的itemView进行添加和布局。众所周知,Recycler负责缓存ViewHolder以供复用,这里通过追踪源码看看Recyc...原创 2020-04-08 14:25:32 · 1852 阅读 · 0 评论 -
AndroidX RecyclerView总结-测量布局
文章目录概述源码探究测量阶段布局阶段dispatchLayoutdispatchLayoutStep1dispatchLayoutStep2dispatchLayoutStep3LinearLayoutManager总结概述通过博文记录RecyclerView的源码学习过程有助于巩固自己的记忆和加深整体实现机制的理解。RecyclerView中通过Adapter将数据源各item转换成各...原创 2020-04-06 22:31:13 · 1097 阅读 · 0 评论 -
AndroidX Fragment探究-状态保存和恢复
文章目录概述源码探究状态保存状态恢复commit & commitAllowingStateLoss总结概述我们知道Activity提供了onSaveInstanceState和onRestoreInstanceState回调方法用于状态保存和恢复,同样FragmentActivity和Fragment也支持状态保存和恢复,FragmentActivity会在适当的时机,通过Fragm...原创 2020-03-28 13:25:46 · 2838 阅读 · 0 评论 -
AndroidX Fragment探究-生命周期
概述Fragment的生命周期依托FragmentActivity管理调度,在FragmentActivity的各个生命周期方法回调中,会将对应生命状态派发给依附于FragmentActivity的所有Fragment。图1.Fragment 生命周期源码探究文中源码基于’androidx.fragment:fragment:1.1.0’Fragment的生命周期派发图2.Ac...原创 2020-03-17 21:25:04 · 1446 阅读 · 0 评论 -
AndroidX Fragment探究-事务操作
文章目录概述源码探究FragmentManager的由来FragmentControllerHostCallbacksFragmentManagerImplFragmentManagerImpl的绑定FragmentController、HostCallbacks、FragmentManagerImpl之间关系添加事务操作开启事务添加add Fragment的操作OpaddOp提交事务处理事务操作...原创 2020-03-15 13:28:48 · 3024 阅读 · 0 评论 -
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 · 3341 阅读 · 0 评论 -
Activity启动流程总结-生命周期
文章目录前言源码探究startActivitystartActivityAsUserstartActivityMayWaitstartActivityUncheckedresumeFocusedStackTopActivityLockedresumeTopActivityUncheckedLockedresumeTopActivityInnerLocked1.pause当前显示的Activitys...原创 2020-02-29 22:37:43 · 2818 阅读 · 1 评论 -
Activity启动流程总结-ActivityThread
文章目录前言源码探究入口函数mainattachattachApplicationbindApplicationmakeApplication总结前言对于Activity的启动流程,从事Android开发的同学都很熟悉。这里仅结合自己的理解,通过博文梳理和记录Activity启动流程关键节点,便于记忆和将来回顾。在Activity启动流程中,当要启动的Activity所在进程未创建时,A...原创 2020-02-22 22:33:01 · 989 阅读 · 0 评论 -
ViewGroup事件分发总结-多点触摸事件拆分
文章目录前言源码探究MotionEvent说明获取触摸点索引获取指定触摸点ID获取所有触摸点ID获取指定触摸点位置坐标拆分事件实际MotionEvent数据触摸点索引和ID关系派发过程派发目标查找执行派发dispatchTransformedTouchEvent事件拆分规则触摸点ID的移除总结前言在《ViewGroup事件分发总结-TouchTarget》中对事件派发过程中TouchTarge...原创 2020-02-15 18:55:47 · 595 阅读 · 0 评论 -
ViewGroup事件分发总结-TouchTarget
文章目录前言源码探究TouchTarget说明重要成员变量触摸点ID存储对象获取和回收事件分发流程派发前准备派发目标查找执行派发mFirstTouchTarget说明总结前言ViewGroup中一个完整的事件派发流程是包含一个完整的事件序列的派发,一个完整的事件序列是从ACTION_DOWN开始,ACTION_UP/ACTION_CANCEL结束。在多点触摸情况下,会出现ACTION_POI...原创 2020-02-15 00:20:23 · 1287 阅读 · 0 评论 -
Android常用Layout源码总结—RelativeLayout
文章目录前言RelativeLayout特点源码探究构造函数初始化属性设置兼容标记LayoutParams相对位置依赖关系图节点Node依赖图DependencyGraphonMeasure测量构建依赖关系图辅助变量参数准备水平方向依赖约束测量垂直方向依赖约束测量调整WrapContent情况下的宽高根据Gravity属性调整位置设置RelativeLayout自身的尺寸onLayout布局onD...原创 2020-02-09 22:03:52 · 780 阅读 · 0 评论 -
Android常用Layout源码总结—LinearLayout
文章目录前言LinearLayout特点源码探究布局属性LayoutParamsonMeasure测量开始测量准备初始参数阶段预测量阶段补充测量阶段测量尾声阶段onLayout布局onDraw绘制总结前言通过学习Android官方Layout的源码,可以帮助自己更好的理解Android的UI框架系统,了解内部便捷的封装好的API调用,有助于进行布局优化和自定义view实现等工作。这里把学习结果...原创 2020-02-05 11:03:43 · 710 阅读 · 0 评论 -
Android常用Layout源码总结—FrameLayout
文章目录前言FrameLayout特点源码探究构造函数LayoutParams测量onMeasure布局onLayout总结前言通过学习Android官方Layout的源码,可以帮助自己更好的理解Android的UI框架系统,了解内部便捷的封装好的API调用,有助于进行布局优化和自定义view实现等工作。这里把学习结果通过写博客进行总结,便于记忆,不至于将来遗忘。本篇博客中源码基于Andr...原创 2020-02-02 19:38:39 · 842 阅读 · 0 评论 -
Flutter开发实践-《玩Android》APP客户端重构
项目概述使用flutter对《玩Android》APP客户端进行重构,采用flutter官方组件进行开发,实现了与kotlin开发的原生APP一致的功能模块。源码地址github地址:Wandroid-APP-lite-flutter...原创 2020-01-25 17:41:29 · 494 阅读 · 0 评论 -
手把手实现ScrollView+ViewPager+RecyclerView常规嵌套首页布局
文章目录前言前言原创 2020-01-15 00:11:03 · 1881 阅读 · 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 · 393 阅读 · 0 评论