自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(285)
  • 资源 (4)
  • 收藏
  • 关注

原创 Android Jetpack 从使用到源码深耕【LiveData 从实践到原理 】(一)

五一假期,第二节课,Jetpack组件LiveData从实践、源码阅读、原理解读几方面,我们一起来学习、探索、总结一下。

2023-05-01 07:30:00 903 4

原创 Android Jetpack 从使用到源码深耕【ViewModel从实践到原理 】(四)

ViewModel使用以及源码分析ViewModel 、 onSaveInstanceState、持久化数据的使用场景总结ViewModel 与 onSaveInstanceState的异同对比

2023-04-30 07:15:00 1013 2

原创 Android Jetpack 从使用到源码深耕【ViewModel从实践到原理 】(三)

onSaveInstanceState与onRetainNonConfigurationInstance 的对比分析SaveStateHandle使用DemoSaveStateHandle源码原理分析

2023-04-29 07:15:00 1179 33

原创 Android Jetpack 从使用到源码深耕【ViewModel从实践到原理 】(二)

ViewModel的实现机制是,在内存中存储了相关的ViewModel的数据,借助 activity的相关周期方法onRetainNonConfigurationInstance 与 getLastNonConfigurationInstance的自动调用,实现了 ViewModel数据的存储和恢复。

2023-04-28 07:00:00 832 47

原创 Android Jetpack 从使用到源码深耕【ViewModel从实践到原理 】(一)

五一期间,我们来一起学习总结一下Jetpack的ViewModel组件,从使用、源码、经验来总结分析。老办法,在研究一个框架之前,先提出一些自己可以想到的问题,带着问题,有目标的去阅读源码,收货相信更多、更明确一些。ViewModel 是做什么的?ViewModel 如何使用?ViewModel 生命周期是怎么样的?ViewModel 数据是如何保存的?是通过文件吗?类似于SP的做法?

2023-04-27 07:00:00 2288 61

原创 2024 目标,乘风破浪,勇往直前*

目标,重新出发

2024-01-15 17:13:22 744 1

原创 DevEco Studio快捷键指南

DevEco Studio的快捷键功能非常强大且灵活,你可以根据自己的需要自定义快捷键配置或者通过插件扩展来增加更多的功能

2023-12-16 15:51:12 2277

原创 Airtest的安装、配置、使用教程

airtest的安装、配置和简单使用,还有就是本地python环境的配置

2023-07-18 09:23:10 2930

原创 Android Jetpack 从使用到源码深耕【LiveData 从实践到原理 】(四)

LiveData使用观察者设计模式,视图作为观察者,数据作为被观察者,视图对于进行数据的观察,当数据发生变化时,可以主动通知视图,这本身是一个很简单类似OnClickListener的简单原理,但是难点在于,如何解决LiveData中由于需要实现通知,拥有了视图的引用,从而导致可能存在的内存泄露问题。

2023-05-04 06:45:00 2097 65

原创 Android Jetpack 从使用到源码深耕【LiveData 从实践到原理 】(三)

LiveData 从实践到原理,源码阅读

2023-05-03 07:00:00 928 25

原创 Android Jetpack 从使用到源码深耕【LiveData 从实践到原理 】(二)

首先是LiveData数据结构定义,经过猜想,我们知道这块两个东西最重要,一个是数据容器的设定,一个是内部存储数据结构,我们这里通过泛型就可以实现/*** 自定义LiveData实现/*** 内部存储的数据结构*/ T data;/*** 构造函数} /*** set方法} /*** 直接在当前线程调用//todo 子线程执行的逻辑 } public T getValue() {} /*** 检测是否为主线程if(!} } }

2023-05-02 07:15:00 899 18

原创 关于重构的原则和思想总结

永远不要忘记「两顶帽子」重构与开发是两顶帽子,要时常交换进行,不可以同时戴上。

2023-04-12 14:51:37 1114 112

原创 有学生问我,重构是什么?我应该如何回答?

重构到底是什么?只是代码的推倒重新编码?还是有规则、有方法可寻?当然,结论肯定是有的,本文,我们通过一个简单的实例,来理解一下重构。

2023-04-11 10:38:21 603 63

原创 Android Jetpack 从使用到源码深耕【数据库注解Room 从实践到原理 】(三)

在源码探索的过程中,大家是否发现了这样一个类。/**/**} }有小伙伴,是否看着很有趣又亲切呢?有趣在于这里即对一个对象的行为进行了接口抽象定义,同时也对这个对象的创建工厂,进行了工厂定义亲切在于,不管是去年我们在设计模式精讲系列课程里,还是在okhttp的源码探索,以及rxjava的源码探索中,发现这些第三方框架,几乎都使用了这样的封装方式,即:先将行为抽象,使外界面向接口编程,其次再将对象创建也抽象,使用工厂模式,进行对象创建。

2023-04-10 09:48:28 2433 62

原创 Android Jetpack 从使用到源码深耕【数据库注解Room 从实践到原理 】(二)

Room是对SQLite数据库的抽象,它提供了很多便利的API和注解等,简化了使用者使用数据库的方式。同时,Room提供了 LiveData、Rxjava的结合使用的组件,更加方便了开发使用。使用Room减少了很多sql模板代码的编写,整体使用上简单、明了了很多,尤其是结合Rxjava,可以直接实现主子线程的切换、流式业务代码操作的编写。

2023-04-07 10:28:53 2388 74

原创 Android Jetpack 从使用到源码深耕【数据库注解Room 从实践到原理 】(一)

本文,我们通过一个简单的sqlite应用实例,引入了Room,知道了Room使用的便捷和好处。然后用Room的方式,重新实现了应用实例中的场景,在这个过程中,我们结合自己已有的知识体系,从使用代码入手,对Room的实现原理,进行了猜想和简单的验证。Room是否是这样做的?下一章节,我们一边阅读源码,一边去看一下。

2023-04-06 14:09:58 2092 62

原创 Android Jetpack 从使用到源码深耕【调度任务组件WorkManager 从实践到原理 】(三)

上面的调用,从worker的提交,到job的具体执行,绕了一圈,我们画个图梳理一下。SerialExecutor的知识应用,当我们想要控制一个任务队列中的任务,串行执行时,可以使用这样的实现方案,但是,我们需要知道,这样有一个坏处就是,达不到并发的目的了。Provider可以用于初始化init函数的调用,当我们在设计一些框架时,为了简化使用者的调用步骤,可以使用Provider的方案。

2023-04-04 14:08:50 2769 59

原创 Android Jetpack 从使用到源码深耕【调度任务组件WorkManager 从实践到原理 】(二)

本文,我们对于WorkManager的初始化、任务入队的源码进行了深入的解读,学到了WorkManager的初始化,和MMKV、VirtualAPK、LeakCanary这些第三方框架源码一样,都使用了Provider初始化的设计方案,发现这真是一个好处,就是使用了manifest注册时,PackageParse会解析其中的四大组件,然后在AMS中进行信息初始化,那么此时Provider就会进行初始化,所以使用了这个特性。

2023-04-03 11:19:46 765 54

原创 【创作赢红包】字节面试遇到的算法题目(LRU缓存机制自我实现题目)

最近在字节的面试过程中,遇到了这样一道算法题目,其实很简单,就是我们经常用到的缓存机制-LRU(最近最少使用),今天有空,总结一下这次的这道面试题目。

2023-04-01 13:54:03 338 12

原创 Android Jetpack 从使用到源码深耕【调度任务组件WorkManager 从实践到原理 】(一)

本文,我们对Jetpack的调度任务组件WorkManager ,由使用入手,对其源码进行深入学习、总结一下。

2023-04-01 11:08:27 1873 58

原创 Android Jetpack 从使用到源码深耕【生命周期感知组件Lifecycle从实践到原理 】(二)

按照标准观察者模式设计思想,首先要定义通知接口看到这里,lifecycle源码,基本都已讲完。我们来总结一下1)lifecycle大体是,通过观察者设计模式,实现activity、fragment等生命周期的具体感知、通知的2)lifecycle实现方案上,对于API>=29采用的最新的API ActivityLifecycleCallbacks 来感知所有的生命周期。

2023-03-31 09:51:22 1319 43

原创 Android Jetpack 从使用到源码深耕【生命周期感知组件Lifecycle从实践到原理】(一)

本文,我们首先一个简单的实际代码例子入手,开始说明lifecycle被引入的背景,进而我们使用lifecycle实现了简单的需求,篇幅所限,lifecycle的自我实现以及源码探索,我们下篇文章继续探索。

2023-03-30 10:05:14 781 36

原创 Android Jetpack从使用到源码深耕【开篇】

V4、V7、androidX,是Google的兼容包的一个进化史,androidX是最终的(目前的),最优整合兼容包Jetpack是一系列组件组成的一个套件,是用于帮助开发者遵循最佳做法、减少样板代码、减少适配代码、减少重复代码,从而让android开发者快速、高效率编码的一个工具盒,对于工具盒中的每项功能,你都可以单独拿起来使用(也就是在gradle中,可以单独引用每个组件)。jetpack历史

2023-03-29 16:24:02 1116 36

原创 Android源码面试宝典之JobScheduler从使用到原理分析(五)【JobIntentService】

1)JobIntentService在android8.0以上,是通过JSS+JSC实现的后台任务执行管理,任务会交由AsyncTask后台执行;在android8.0以上,是通过PowerManager来获取了wakeup锁,实现了后台任务的执行管理,任务同样也会交由AsyncTask后台执行;2)JobIntentService的任务后台执行,是放置于线程池的,所以是多线程并发执行;

2023-03-29 13:47:31 900 30

原创 Android源码面试宝典之JobScheduler从使用到原理分析(四)【JobScheduler、StateController 】

本文,我们主要对IntentService的替代API接口JobScheduler,从简单的使用入手,然后逐步对内部的实现源码细节进行分析。JobSchedulerService是一个关键的系统服务,在android系统启动时,作为核心服务已经启动。我们通过JobScheduler提交的JobInfo,在JobSchedulerService中,会转换为JobStatus,然后交由各个状态监控器StateController去监控。

2023-03-28 11:04:01 2013 72

原创 Android源码面试宝典之JobScheduler从使用到原理分析(三)【JobService、JobInfo】

本文,从Job任务的创建,到如何与JSC(JobServiceCotext)关联,到具体任务的绑定、执行进行了源码探索,相信大家到现在为止,对于JobScheduler的庐山真面目,脑海中已经有了些许自己的轮廓。但是,我们也知道,目前为止,仅仅是任务的创建、任务的执行原理我们了解、学习到了,但是任务何时执行的?约束条件如何监控job的?这些还未讲到。别着急,下一节,我们一起继续探索源码,解析其中的奥秘。

2023-03-27 11:25:49 1017 49

原创 Android源码面试宝典之JobScheduler从使用到原理分析(二)【JSS的启动】

Android源码面试宝典之JobScheduler从使用到原理分析(二)【JSS的启动】我们从使用代码入手,通过阅读JobScheduler源码,来开始对于其原理,进行深入解读。

2023-03-24 10:07:08 2094 61

原创 Android源码面试宝典之JobScheduler从使用到原理分析(一)【JobScheduler的使用】

我们先看一下google官方,对于这个API框架有哪些接口和类?可以看到主要有JobInfo、JobScheduler,其中 JobInfo有内部类Builder,那么看这个设计,应该是可以通过建造者模式,去外部构建一个 JobInfo实体对象,然后我们看到JobScheduler有schedule方法,那么应该就是把这个JobInfo交由JobScheduler去执行即可。

2023-03-23 16:57:24 1880 72

原创 【Android源码面试宝典】MMKV从使用到原理分析(二)

MMAP原理MMKV原理mmkv源码

2023-03-01 09:42:49 2957 151

原创 【Android源码面试宝典】MMKV从使用到原理分析(一)

去年,我们写过一篇文章,对于android原生提供的key-value存储API SharePreference,进行了,进行了深入的探索、总结。但是之前的文章,我们仅仅指出了问题,没有给大家提供解决方案,也就是说,SharePreference既然不建议使用,那么我应该使用啥?mmkv原理mmkv使用

2023-02-28 10:36:40 4252 116

原创 日常编程中和日期相关的代码和bug

本文主要是Java中和日期时间相隔的几个常用代码函数代码,做了总结,希望在日常编码中,可以帮到大家。闰年平年的判断、延迟执行、定时执行

2023-02-24 17:23:52 2753 90

原创 【字节面试】Fail-fast知识点相关知识点

什么是Fail-fast机制?Hashmap是否拥有Fail-fast机制?ConcurrentModificationException异常原因和解决方法是什么?哪些你常用的数据结构是Fail-fast的,哪些不是?举例说明一下Enumeration与Iterator的异同?

2023-02-22 09:20:35 3553 143

原创 Retrofit源码分析&实践(八)【Retrofit CallAdapter的引入】

Retrofit+Rxjava大家知道如何使用吗?添加CallAdapterFactory支持

2023-02-17 09:55:02 3145 153

原创 Retrofit源码分析&实践(七)【Retrofit ConvertFactory的功能实现】

Retrofit实践系列课程到现在,大家是否发现还有两个关键问题,或者准确一点,应该描述为两个功能并未实现一个是Gson数据的解析,我们是直接在返回里面使用了Gson解析的,并未使用到最初框架设计的时候,加入的ConvertFactoryRetrofitCall中数据的解析,其实包含两方面,一方面是gson的转换,一方面是code的处理,这部分,明显不应该写死在这里,因为服务端可能返回xml数据、gson数据,另外code的不同,你封装一个框架是给其他人去用的,code怎么能写死在解析里面呢?

2023-02-15 17:01:35 4661 119

原创 Android APK 签名打包原理分析(三)【静默安装的实现方案】

小编目前从事的系统定制类工作,有客户提出了,需要后台“静默安装”他们的app,也就是悄无声息的安装,而且特别强调,不可以跳出任何安装引导页面,他们的app下载完成之后,后台调用公开的android install代码,系统就后台完成安装,安装完成之后,重新打开应用就可以。估计大家即使一直从事的是单纯的app开发,那么也稍微接触过此类需求,比如前两年特别火的,微信抢红包插件。好了,背景先交代到这里,我们由浅入深的,去了解一下静默安装的方案有哪些,都应该如何去实现?

2023-02-14 09:34:50 3452 85

原创 【Android运行时错误】Error inflating class CollapsingToolbarLayout

【Android运行时错误】Error inflating class CollapsingToolbarLayout

2023-02-13 10:41:30 1736 130

原创 Android APK 签名打包原理分析(二)【Android签名原理】

APK签名打包原理,消息摘要,加密

2023-02-10 09:41:54 5251 118

原创 Android APK 签名打包原理分析(一)【APK结构分析】

本文差不多讲完了,我们整体是对照的这个图,同时配合自己的原始目标(几个问题),来一步一步的探索打包的具体过程的。大家不妨阅读末尾,对照的这个图,脑海中回顾一下,通过本文学到的知识点。binder机制的原理aidl、aapt分别的作用R.java和resource.arsc文件的关系AssetManager与 Resources关系打包的过程。

2023-02-07 09:51:52 6128 140

原创 Retrofit源码分析&实践(六)【Retrofit 多BaseUrl问题解决】

本节到这里就基本结束了,我们回顾一下。解决retrofit 多baseUrl的动态解决方案就是RetrofitManager作为单例类,使用map保存baseurl-retrofit的一一对应保存为了解决需要记忆baseurl-retrofit一一对应关系的问题,我们引入自定义注解BaseUrl,给需要的接口类,直接添加这个注解。

2023-02-01 09:48:06 5869 117

原创 Retrofit源码分析&实践(五)【Retrofit Call等问题解决】

篇幅所限,本文我们先就其中四个问题进行了解决,过程中,也对之前实现的诸多代码进行了优化。Create接口,使用泛型,面向所有请求接口注解的处理封装到ServiceMerthod方法中Call对象的封装和转换返回数据不规范的解决方案。

2023-01-31 11:31:46 637 62

EclipseWeb集成开发工具

Eclipse Version: Mars.1 Release (4.5.1) 与 Apache-tomcat-7.0.81集成版本,大家不必再单独下载配置,下载此软件,可直接使用

2022-10-25

SuperRecyclerView-master

SuperRecyclerView-master,RecyclerView是我们经常使用的android 控件,此控件自动实现了头、尾的装饰开发。

2022-10-24

MPAndroidChart android图形绘画工程

MPAndroidChart-master,android图形绘画工程,绘制柱状图、折线图、表格等等图形。大家可以使用试试,效果还是不错的,当然了,有能力的小伙伴,最好研究一下源码,相信会有更大的收获。

2022-10-24

Java面试枚举从使用到原理

【Java面试】枚举从使用到原理

2022-10-24

Markdown 的语法word版本

本文档主要讲述的是MARKDOWN 语法说明;Markdown 的语法全由一些符号所组成,这些符号经过精挑细选,其作用一目了然。Markdown 语法的目标是:成为一种适用于网络的书写语言。

2022-10-24

自定义实现的bindview框架(Butterknife)

自定义实现的bindview框架(Butterknife),通过编译时注解处理(APT)+JavaPoet(生成java代码)+反射(调用bind方法),来在框架中实现了,事件的自动绑定和视图的自动绑定。

2022-05-07

Linux版本JDK1.8.0_92版本

Linux版本JDK1.8.0_92版本

2022-03-29

ThreadStateProject

thread state test project 1.对比java中的sleep()和wait()的区别 2.等待调用join方法的线程结束,再继续执行

2017-03-16

哈夫曼树代码用c++写的

简单的代码简单的代码简单的代码简单的代码简单的代码简单的代码简单的代码简单的代码简单的代码简单的代码简单的代码简单的代码

2011-06-06

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

TA关注的人

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