草庐IT

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

前面两篇文章,我们一起学习了,Room引入的背景、Room的使用方式、Room的实现原理猜想验证、Room的源码原理探索总结。本文,我们将其中牵扯到的课外知识点or过程中没有说到的知识点,进行一下单独的总结。题外话:扩展知识点总结1.抽象工厂的设计模式应用在源码探索的过程中,大家是否发现了这样一个类。publicinterfaceSupportSQLiteOpenHelperextendsCloseable{StringgetDatabaseName();voidsetWriteAheadLoggingEnabled(

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

解耦是软件开发中永恒的话题,面对这个话题,思想、方法方面的总结,就是我们平常所说的设计模式,经验丰富的开发人员,可以在代编码过程中,灵活使用各种设计模式,从而进行代码逻辑、业务、UI等等方面的解耦。但是,大家也知道,针对于初级开发人员来说,让刚开始编码就要考虑到这些,往往是强人所难的,所以这时,一个词汇应运而生组件。具体来说,很简单,就是有经验的开发人员,将某一功能,封装为单独的组件,供其他研发使用,那么对于开发人员,一方面不再需要自己去编码实现某一功能的实现和封装,另外一方面,针对于有经验的研发人员来说,无疑他们在实现组件的过程中,可以将自己的实际编码经验、解耦经验、设计模式应用经验等等,应

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

解耦是软件开发中永恒的话题,面对这个话题,思想、方法方面的总结,就是我们平常所说的设计模式,经验丰富的开发人员,可以在代编码过程中,灵活使用各种设计模式,从而进行代码逻辑、业务、UI等等方面的解耦。但是,大家也知道,针对于初级开发人员来说,让刚开始编码就要考虑到这些,往往是强人所难的,所以这时,一个词汇应运而生组件。具体来说,很简单,就是有经验的开发人员,将某一功能,封装为单独的组件,供其他研发使用,那么对于开发人员,一方面不再需要自己去编码实现某一功能的实现和封装,另外一方面,针对于有经验的研发人员来说,无疑他们在实现组件的过程中,可以将自己的实际编码经验、解耦经验、设计模式应用经验等等,应

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

上文,我们进行了google任务调度系列知识体系的回顾、探索,引出了WorkManager。然后我们基于一个简单的需求背景,进行了WorkManager的引入使用,不过从使用上,我们看到和JobScheduler几乎一样的使用步骤,所以猜想内部实现原理,估计和JobScheduler差不多,本文,我们就WorkManager的源码入手,对原理进行深入的探索、总结。1.初始化我们直接从使用入手,一步一步来分析一下WorkManager的源码,先看WorkManager.getInstance(this)publicstatic@NonNullWorkManagergetInstance(@Non

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

上文,我们进行了google任务调度系列知识体系的回顾、探索,引出了WorkManager。然后我们基于一个简单的需求背景,进行了WorkManager的引入使用,不过从使用上,我们看到和JobScheduler几乎一样的使用步骤,所以猜想内部实现原理,估计和JobScheduler差不多,本文,我们就WorkManager的源码入手,对原理进行深入的探索、总结。1.初始化我们直接从使用入手,一步一步来分析一下WorkManager的源码,先看WorkManager.getInstance(this)publicstatic@NonNullWorkManagergetInstance(@Non

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

本文,是Jetpack调度任务组件WorkManager从实践到原理系列文章的最后一篇,本文我们将对WorkManager任务的具体执行源码,进行深入的解读。大家坐好,我们要开始飙车了。1.任务的具体执行书接上文,我们既然知道了WorkManager,既然把worker包装为了workrequset,然后提交到了线程池执行,那么我们直接去看一下EnqueueRunnable的run方法,做了些啥?1.1EnqueueRunnable@Overridepublicvoidrun(){try{

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

本文,是Jetpack调度任务组件WorkManager从实践到原理系列文章的最后一篇,本文我们将对WorkManager任务的具体执行源码,进行深入的解读。大家坐好,我们要开始飙车了。1.任务的具体执行书接上文,我们既然知道了WorkManager,既然把worker包装为了workrequset,然后提交到了线程池执行,那么我们直接去看一下EnqueueRunnable的run方法,做了些啥?1.1EnqueueRunnable@Overridepublicvoidrun(){try{

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

本文,我们对Jetpack的调度任务组件WorkManager,由使用入手,对其源码进行深入学习、总结一下。1.问题研究这个框架之前,我们基于自己已有的知识体系,想一些问题,给自己设定一些目标,带着目标和问题,去阅读这块的源码,相信收获会更多更深一些。1)WorkManager是做什么的?2)WorkManager怎么用?3)WorkManager是如何实现的?我们自己如何去实现这样一个框架,如何实现?4)尝试先用自己的已有知识体系,实现一下WorkManager5)WorkManager如何实现调度任务管理、执行的?是否就是对ThreadPool+Runnable进行的一次封装实现?6)Wo

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

本文,我们对Jetpack的调度任务组件WorkManager,由使用入手,对其源码进行深入学习、总结一下。1.问题研究这个框架之前,我们基于自己已有的知识体系,想一些问题,给自己设定一些目标,带着目标和问题,去阅读这块的源码,相信收获会更多更深一些。1)WorkManager是做什么的?2)WorkManager怎么用?3)WorkManager是如何实现的?我们自己如何去实现这样一个框架,如何实现?4)尝试先用自己的已有知识体系,实现一下WorkManager5)WorkManager如何实现调度任务管理、执行的?是否就是对ThreadPool+Runnable进行的一次封装实现?6)Wo

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

上文,我们首先一个简单的实际代码例子入手,开始说明lifecycle被引入的背景,进而我们使用lifecycle实现了简单的需求,本文,我们一起对Lifecycle的自我实现以及源码进行深入探索。1.自我实现Lifecycle框架还是三板斧,知道了怎么去用?那么用我们自己的知识体系,不妨先猜一下这个如何做的?用自己所学所想的已有知识,试着去实现这样的一个框架。然后再去看lifecycle的源码中的逻辑,是否如我们所想。首先梳理一下,有哪些技术难点或者要点要去解决?1)如何监听fragment、activity等生命周期呢?2)如何通知观察者,相应的生命周期事件呢?猜想实现的中心思想:.应该是基