- 博客(115)
- 收藏
- 关注

原创 Flutter State Management状态管理全面分析
前言2019 Google I/O 大会,google就推出Provider,成为官方推荐的状态管理方式之一,Flutter 状态管理一直是个很热门的话题,而且状态管理的库也是超级多,这确实是我们每一个做Flutter开发难以避免的一道坎,既然这么重要,我们如何去理解它,如何使用它,如何做到更好呢?接下来让我告诉你答案主要内容一张图告诉你,我要讲的主要内容。下面将围绕这八个...
2020-05-21 14:55:22
638

原创 一个在线的jetpack模板项目生成工具
引言不知道大家用过Spring Initializr没有,这个是鼎鼎大名的Spring boot 在线生成工具,一个完美的生态,给开发者提供太多的便利,默默付出着,可为什么没有一个Android项目的在线生成工具呢?大家都不需要吗,我并不这么想,大家都知道Jetpack提供了一套Android应用开发的各种组件,甚是方便,而且官方还专门开源了这个architecture-compone...
2020-03-22 08:22:54
300
原创 程序员也适用的人生商业模式
前言达.芬奇是一名非常伟大的画家,《蒙拉丽莎》你一定知道,就是他的名画,但你知道吗?他除了是一名伟大的画家,还是雕刻家、建筑师、音乐家、数学家、工程师、发明家、解剖学家、 地质学家、制图师、植物学家、作家......,简直就是开挂的一生,在这个世界上,有些人,一旦在某个领域获得了成功,就几乎可以在任何一个领域都获得成功,为什么呢?这背后有 什么底层逻辑么?当然有,人生,就是一种商业模式,可以用...
2022-07-19 13:55:24
667
原创 如何阅读框架源码
前言阅读框架源码的能力想必是每个程序员都应该熟练掌握的一门技能,既然是一门技能,便有它的方式方法,下面我就总结一下,教你如何高效的阅读框架源码。为什么要阅读源码时间很宝贵,我们只做有用的事,那到底为什么要阅读源码呢?或者说阅读源码有什么好处呢?有如下用途:面试解决问题提升编程能力第一点,就不用多讲了,在每次面试过程中,都多少会遇到源码的题,第二点,当你工作中遇到一些特殊的问题时,...
2022-06-07 02:20:30
868
原创 Android性能优化的底层逻辑
前言性能优化仿佛成了每个程序员开发的必经之路,要想出人头地,与众不同,你还真需要下点功夫去研究Android的性能优化,比如说,从优化应用启动、UI加载、再到内存、CPU、GPU、IO、还有耗电等等,当你展开一个方面做优化的时候,是不是也曾跟我一样,一头雾水,摸不着头脑,甚至找不到方法,然后看了大量的文章,最后记住了一些别人消化过的方式方法,就觉得自己学会了,其实我现在并不这么认为,我觉得性能优...
2021-08-08 17:43:28
478
原创 教你如何高效的检查APK中使用敏感权限的地方以及检查某系统方法被调用的地方...
前言相信最近在App上架应用商店的同学都感受到了,国内对用户的隐私越来越重视,如MAC地址,设备ID,IMEI信息等,要么就干脆不用,要么就必须很明显的告诉用户想要获取这些信息,相关法律及规定,参考《网络安全法》及《关于开展APP侵害用户权益专项整治工作的通知》开门见山废话不多说,找了几个反编译工具,并简单看了下使用方法,最终锁定androguard,官方解释:对Android应用程序的逆向...
2021-07-17 09:51:24
3959
6
原创 程序员的职业素养
前言最近看了一本书,还没有看完,但书中有些东西让我产生了共鸣,所以我也想写出来,让大家来感受一下,工作7年之久,在工作中也遇到过各种各样的人和事,但总的来说,那些混的不错的都如同书中写的那样,程序员确实是个特殊的职业,但不管怎么样,一种好的职业素养带来的就是好的发展前途。下面跟我一起来看看,到底哪些职业素养,能让你少走一弯路,多留一信心。职业素养如果你不小心放过一个bug,以致于公司造成经济...
2021-05-29 09:50:26
562
1
原创 From Java to C++ 第五篇之智能指针
前叙From Java to C++ 第一篇From Java to C++ 第二篇From Java to C++ 第三篇From Java to C++ 第四篇之内存管理篇回顾前面我们了解到RALL的基本用法,可以在方法执行完以后,主动将堆内存对象释放掉,从而简化了内存管理,解决内存泄漏的可能,这次我们学习下RALL,如果做一个完善的智能指针。智能指针的本质它的出现其实是为了解决由于...
2021-05-16 20:03:17
285
原创 From Java to C++ 之内存管理篇
前叙From Java to C++ 第一篇From Java to C++ 第二篇From Java to C++ 第三篇在前面三篇中,从快速入门,再细节到C++实参传递特点,这次我们从最最基础,恰巧也是最最重要的部分,内存管理,为什么说它重要呢?因为在C++中并没有提供像Java一样的完善的垃圾回收机制,就算有也是比较简单的,并不能作为完美的依靠,但恰巧是因为开发可以自己控制内存,来达到更...
2021-05-15 17:05:24
178
原创 From Java to C++ 第三篇
前叙From Java to C++ 第一篇From Java to C++ 第二篇风格逆转前面两篇,以java代码实例的对比,来做了快速的C++转型,但其实那样根本不够,因为在任何一门语言里,最终拼的都是细节处理,为什么C++这么的难学,其实也是细节够多,知识点够复杂导致的,所以接下来我们就针对C++中,也是相对java所特有的一些特性,逐一学习,当然也会有对应的代码举例,来辅助理解。大...
2021-05-14 20:23:11
139
原创 From Java to C++ 第二篇
第一篇:https://www.jianshu.com/p/667b7160b3f9序言上篇我们熟悉了C++的基本用法,既然C++也是一门面向对象的语言,那么这期我们就来对比下Java和C++中,方法和类是如何书写的。方法Javapublic void hello() { System.out.print("Hello, World!");}C++int hello(); //...
2021-05-08 12:55:18
126
原创 From Java to C++ 第一篇
前言C++ 作为 C语言的延伸,而Java 被设计成 C++ 简化的继任者,他们都有着很多共同点,如基本类型相同:int、char、float、long、double,当然也有一些不同,如Java char 是 2个字节,一个字节8位,如:0000 1111,那么2个字节就是16位,而C++里的char只有8位,也就是1个字节,这个要注意。它们还都有表示true、false的数据类型,且if ....
2021-05-05 23:38:14
108
原创 Matrix源码分析系列-如何监控帧率变化
帧率是什么FPS是图像领域中的定义,是指画面每秒传输帧数,通俗来讲就是指动画或视频的画面数帧率的影响是什么我们用华为解读的《软件绿色联盟应用体验标准3.0》原话来解释:应用界面的刷新帧率,尤其是滑动时,如果帧率较低,会带来卡顿的感觉,所以保持一个相对较高的帧率会带来更流畅的体验。还有刷新频率越低,图像闪烁和抖动的就越厉害,眼睛疲劳得就越快。那么影响帧率的是什么呢现在的Android旗舰机...
2021-04-24 09:04:06
779
原创 Matrix源码分析系列-如何解析应用安装包
前言首先我们思考一个问题,为什么要解析安装包?目的是什么?什么原因促使我们做这件事?减小包的体积,产品或运营同学认为,包体积越小,越能提高下载量应用市场限制,如App Store、Google Play 都有相关包体积的规定,都是以更小为主减少内存占用,不管是Rom还是Ram 肯定是随着应用包的体积增加而成正比增加,所以减小包体,也是在间接优化内存占用我们找了这么几个原因,促使我们做...
2021-04-12 18:48:01
1086
原创 Matrix原理分析系列之开篇
背景应用性能监控和性能优化一直是老生常谈的话题,很多大厂都有专门的团队在做,腾讯就做了一款性能监控的框架matrix,且已经开源,对于个人而言,这是一次绝佳的学习机会,像如何做到启动耗时的计算,就要去了解App的启动过程,系统函数如何被调用,被调用的顺序又是什么等等吧,这次内容即将从matrix框架的各个方面进行一一展开,弄清楚到底是怎么监控的,且深入到代码的实现来看清本质。对于公司而言,这也是...
2021-04-12 18:46:58
1017
原创 Android组件化演进-第一篇
背景近年来,组件化一直是业界积极探索和实践的方向,越来越多的公司使用组件化来构建项目,我们公司在组件化实践方向也有了一些实践,但目前还没有一个标准,这也是我们为什么要整理这个文档的目的,确定一下组件化的方案,为未来的复杂业务助力。组件化带来的优势首先组件化的一些优势是我们应用它的核心价值,那么都有哪些优势呢?大致总结如下: 1.加快项目编译速度,提高开发效率,因为模块可以独立编译、测试、打包...
2021-03-16 14:40:13
239
1
原创 Android 12 预览版带给我们的1234
image对于每个版本,我们都致力于使操作系统更智能,更易于使用和更好地执行,并以隐私和安全为核心。在Android 12中,我们还致力于为您提供新工具,以为用户打造出色的体验。首先从兼容的媒体转码之类的东西开始,这可以帮助您的应用使用最新的视频格式(如果您尚不支持它们),以及轻松地将丰富的内容(例如图像和视频)复制/粘贴到您的应用中。我们还将添加隐私保护并优化性能,以保持应用程序的响应...
2021-03-05 09:44:38
901
原创 腾讯Matrix Gradle 6.5升级适配
背景腾讯的Matrix,想必很多人都知道,也有很多人在使用,可是我们就遇到了一个很严肃的问题,那就是Matrix写的gradle插件,无法兼容Gradle6.5,而我们的几个B端和C端项目,都做了Gradle的升级,一不做二不休,也是趁着源码分析的功夫,将其做一下升级适配,而且我看了Matrix Github的Issues,发现有好多人纠结这个问题,那么这期就让我,带着大家搞一发适配吧。我就不吐...
2021-01-23 01:45:01
525
1
原创 2020年总结篇
前言首先祝大家新的2021年快快乐乐,身体健康,万事顺心。这一年很特别,对于每个人来说都是一个难忘的一年,而对于我来说也是一个很有挑战的一年,那么我都经历了什么呢?请听我娓娓道来。大年初四踏上回京路记得大年初一走完亲戚后,就不让走动了,当时整的人心惶惶的,一想到初七要上班,又担心安全,又担心工作,不得已选择早早的踏上回京路,初三选择搭乘一朋友包的车一同去高铁站回京,没想到被交警拦下,说这个车...
2021-01-02 11:32:11
156
原创 一个资深程序员应该学会用kotlin写一点线程安全的代码
thread-safety-in-kotlin.jpg前言提到线程安全,很多人肯定知道synchronized,但事实上,它只是让线程保持安全的方法之一,Android是以java为核心编程的,而java并发编程中,难免会遇到线程安全的问题,至于为什么要处理线程安全的问题,由于Android应用进程中,默认都会有一个Main线程,网络数据一般是新创建的线程处理,那么就会存在多线程开...
2020-10-14 19:26:23
1869
原创 手写一个Flutter State Widget,来让你彻底理解State的来龙去脉
image往期相关内容Flutter State Management状态管理全面分析:https://www.jianshu.com/p/9334b8f68004Flutter Provider 迄今为止最深、最全、最新的源码分析:https://juejin.im/post/6844904176074358791Flutter之万物皆Widget:https://ju...
2020-09-23 22:57:22
1111
原创 Flutter之万物皆Widget(一种你没见过的方式来深入Widget)
背景为什么说Flutter万物皆Widget?首先你要知道,Flutter是什么,它是一个现代的响应式框架、一个2D渲染引擎、现成的widget和开发工具,基于Skia,一个性能彪悍的2D图像绘制引擎,2005年被Google收购,被广泛应用于Chrome和Android之上,等等吧,说白一点,Flutter就是一个UI框架,所以说,万物皆Widget,而Widget的中文意思是小部件,它为什么...
2020-09-23 17:31:58
608
原创 教你用更好的方式在Activity或Fragment之间传递以及返回数据
前言我们都知道在Activity之间传递数据很繁琐,为了简化,很多人都是使用过EventBus,可EventBus在追踪问题时反而束手无策,反而增加调试时间,那我们能不能找一个折中的方案,又能简单的实现,又能容易追查问题呢?下面请允许我介绍一下最新的方式在实现数据的Result。先来看看以前我们都是如何做的override fun onActivityResult(requestCode: ...
2020-09-06 00:50:38
306
原创 是时候开始重构Android Http网络层框架了(一个现代化的Http网络框架源码分析)
横观历史image.png一点感概记得当年刚入行Android,让我记忆犹新的框架android-async-http,当时用的不亦乐乎,随着时间的变迁,官方的新宠Volley诞生,不久的不久官方宣布自己放弃,坑爹,Android 4.4后,HttpURLConnection底层实现改为OkHttp,随即OkHttp是各个大牛封装的根基,Retrofit最为知名,可以说几乎没有人...
2020-08-29 19:43:05
406
原创 教你如何用一行命令:Android打包->上传->发测试包通知
背景你是不是经常遇到这个场景,测试找你要测试包,你还在忙着手动打包,然后上传云存储,再然后拿着链接,发到群里通知测试。也可能是你已经用上了Jenkins实现,可我今天要做的就是教你如何自己实现呢?这样做有什么优势呢?没有环境的差异,云端打包固然好,但总会遇到环境问题导致的打包失败,且不好修复100%的可定制化,随心所欲连云存储都是自己的,不担心别的平台对你的测试包进行反编译,窃取技术...
2020-08-24 10:13:01
402
原创 RecyclerView Adapter系列之集成Lifecycle
为什么集成LifecycleLifecycle几乎已经是Android开发的标准库,如LiveData、ViewModel甚至协程,都有Lifecycle的扩展,毋庸置疑,我们集成它,一方面为了赶上潮流,顺势而为。另一方面为了更好的管理Adapter的数据,我们都知道Adapter有个onDetachedFromRecyclerView方法,在Adapter从RecyclerView解绑的时候被...
2020-08-12 15:23:47
684
原创 这可能是你见过的迄今为止最简单的RecyclerView Item加载动画
如何实现RecyclerView Item动画?这个问题想必有很多人都会讲,我可以用ItemAnimator实现啊,这是RecyclerView官方定义的接口,专门扩展Item动画的,那我为什么要寻求另外一种方法实现呢?因为最近反思了一个问题,其实很多人都有这个思维定律,那就是官方的一定是好的,真的是这样吗?下面我来从另一个角度说明官方的ItemAnimator是真的不好用ItemAnimat...
2020-08-06 16:01:58
590
原创 后现代化RecyclerView Adapter稳定版本终于来了
背景相信大家都已经在使用kotlin了,可我们使用最频繁的Adapter缺很少有人用kotlin做扩展,即使有,但给我的感觉还是不够,第一不够简洁,第二功能耦合在一起,第三不够完善,于是我决定自己做一个,经过这段时间的研究,前面也写了三篇博客了,都是我这段时间的劳动成果,可之前的设计还是会有一些不好的地方,也是经过几次的验证后,目前有了稳定版,对于这个版本我还是比较满意的,下面有请我厚脸皮给你们...
2020-08-02 17:37:16
329
原创 重学RecyclerView Adapter封装的深度思考和实现
背景一转眼,从一开始发布文章说带大家封装Adapter直到现在,过去半个月了吧,前后又仔细阅读了很多Adapter的框架源码,对Adapter的千变万化算是有了深刻的认识,真的是温故而知新,借着这次机会,我也将学到的这些优点一一的列出来告诉你,跟我一起重新认识Adapter值得一看的Adapter开源项目mikepenz/FastAdapterDevAhamed/MultiVi...
2020-07-12 23:22:55
482
原创 一个全新的RecyclerView Adapter框架源码开源
RecyclerViewAdapter重新定义RecyclerView Adapter的封装,追求既简单又实用,结合Kotlin的高级特性,优化代码书写方式,真正做到高内聚低耦合开源地址Github RecyclerViewAdapter框架设计核心思想摒弃notifyDataSetChanged无脑操作,利用ObservableList自动匹配数据,并实现局部刷新真正通用的View...
2020-07-04 15:19:13
568
原创 一个资深的Android是不是应该学会自己做一个超级的RecyclerView.Adapter
前言一晃五六年,岁月蹉跎,不禁感叹:曾几何时,沉迷于框架不能自拔,不管做什么需求都要找一个框架出来,然后用了一段时间后,发现诸多问题,很多时候又不得不将就着用,难道我们就应该被别人左右吗?答案是No,还是得试着提高自己的架构能力,来应对未来更多的挑战。你越是醒悟的快,你的进步就会越快,阅读源码是痛苦的,可越来越多的痛苦终将会成就你,不信你跟着我往下看。本期内容常用Adapter比较原生A...
2020-06-14 23:04:34
246
原创 Flutter State Management状态管理之Provider全面分析
回顾Flutter State Management状态管理全面分析上期我们对Flutter的状态管理有了全局的认知,也知道了如何分辨是非好坏,不知道也没关系哦,我们接下来还会更加详细的分析,通过阅读Provider源码,来看看框架到底如何组织的,是如何给我们提供便利的。本期内容通过官方我们已经知道其实Provider就是对InheritedWidget的包装,只是让InheritedWi...
2020-05-31 00:51:34
731
原创 Flutter Theme主题系列之ButtonBarTheme
简介继承关系Object> DiagnosticableTree> Widget> ProxyWidget> InheritedWidget> ButtonBarThemeButtonBarTheme通常用于ButtonBar的主题使用,它有一套默认主题,在你没有做变更的前提下,作为ThemeData构造函数的参数,你可以轻松做到全局改主题样式。简单用法如下:...
2020-05-17 11:16:31
937
原创 Flutter Web网站之Markdown展示与博客列表
往期Flutter Web网站搭建教程Flutter Web网站之主页框架搭建Flutter Web网站之Jetpack成型Flutter Web网站之ScrollView+GridView优化Flutter Web网站之最简方式实现暗黑主题无缝切换上期回顾上期主要实现了主题切换,通过StreamBuilder来动态的切换ThemeData,最终达到效果。本期内容Markd...
2020-05-13 11:43:41
1036
原创 Flutter Web网站之最简方式实现暗黑主题无缝切换
往期Flutter Web网站搭建教程Flutter Web 网站之主页框架搭建Flutter Web网站之Jetpack成型Flutter Web网站之ScrollView+GridView优化上期回顾上期我们做了优化,主要针对ScrollView+GridView的使用场景,用了更加合适的组件,这期想做一个主题变更,为什么呢?第一 暗黑主题越来越刚需化,现在哪个主流App没有暗黑都不好意思上架,而ios阵营更加强硬的要求平台实现,否则下架,库克牛逼,我们惹不起。第二 项目还处于初期
2020-05-12 14:07:41
485
原创 Flutter Web网站之ScrollView+GridView优化
往期Flutter Web网站搭建教程Flutter Web 网站之主页框架搭建Flutter Web网站之Jetpack成型上期回顾上期我们做了简单的分包处理,然后就用了SingleChildScrollView+GridView为主要的框架实现了网格布局以及上下滑动效果,Chrome Web以及原生体验并没有发现什么问题,可在微信的Web浏览器中发现根本滑不动。这是什么问题呢?接...
2020-05-03 12:54:28
313
原创 Flutter 控件系列教程之GridTile
titledescriptiontypeGridTileGridTile介绍及使用案例widgetGridTile继承关系Object>Diagnosticable>DiagnosticableTree>Widget>StatelessWidget>GridTile基本用法GridTile( header: Co...
2020-04-24 22:06:14
444
原创 Flutter Web网站之Jetpack成型
往期Flutter Web网站搭建教程Flutter Web 网站之主页框架搭建上期回顾上期我们做了一个能兼容不同屏幕大小的主页,来适配Web、Android等平台。主要用到了**MediaQuery**来动态获取屏幕的宽度,来动态适配UI。本期内容好消息,我申请的域名jetpack.net.cn已经下来了,这次的目标就是让网站正式成型,完善网站的内容。完成Jetpack UI...
2020-04-19 23:32:22
306
1
原创 Flutter 动态表单Dynamic FormField架构设计
架构图用了几年前设计的Table架构图,是kotlin版本的动态表单框架,也同样适用于现在的设计,这次从设计到实现,其实经历了很多,前期看官方文档FormField的用法,还有一些现有的动态表单框架,一开始选择用一般的StatefulWidget实现,但做了几个发现一个问题,各个Widget的状态管理,数据的变化,或者说统一的验证提交等操作,需要太多的实现,未来简化实现,最终还是选择用Form...
2020-04-06 12:34:01
1801
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人