前言相信很多人在职业生涯的面试过程中都被问过一个问题?面试官:我看你简历上有写 LiveData,那你能说说 LiveData 是粘性的吗?这确实是一个值得深入思考的知识点,今天就让我们站在Google设计者的角度来深入学习一下LiveData。LiveData是粘性的吗?关于这个问题,我们首先应该知道,粘性是什么意思?不知道你对EventBus熟不熟悉,我第一次接触粘性这个概念,就来自于Even
2022-12-20 michael007js 113
前言相信大家都用过EventBus这个开源库,它基于发布/订阅者模式用于组件间的沟通,解耦合避免出现回调地狱,使用起来十分简单也很好用。这样的开源库是很值得我们学习的,今天就来学习一下他的源码与设计思想。 使用方法使用方法很简单,按照官方文档介绍,分为三个步骤。步骤1:定义事件public static class MessageEvent { }复制代码步骤2:准备订阅者定义订阅方法,来处理收到
2022-12-20 michael007js 108
前言我们都知道 Activity 与 Fragment 都是有生命周期的,例如:onCreate()、onStop() 这些回调方法就代表着其生命周期状态。我们开发者所做的一些操作都应该合理的控制在生命周期内,比如:当我们在某个 Activity 中注册了广播接收器,那么在其 onDestory() 前要记得注销掉,避免出现内存泄漏。生命周期的存在,帮助我们更加方便地管理这些任务。但是,在日常开发
2022-12-20 michael007js 71
在清明节时各大APP都会进行黑白化处理,当时在接到这个需求的时候感觉好麻烦,是不是又要搞一套皮肤?然而在一系列搜索之后,找到了两位大神(鸿洋、U2tzJTNE)的实现方案,其实相当的简单!让我们一起站在巨人的肩膀上来分析一下原理,并思考会不会有更简便的实现?一、原理两位大神的置灰方案是相同的,都能看到一段同样的代码:Paint mPaint = new Paint();ColorMatrix mC
2022-12-16 michael007js 110
无论何时,只要去做网络请求相关的事情,都离不开HTTP(超文本传输)协议,它是Web上任何数据交换的基础,同时也是一个客户端-服务器协议;这些年间,HTTP经历很多变化,也有助于塑造其灵活性,下面我们来简单谈谈HTTP在各个版本做了哪些改变通过本文,你将了解学习到如下内容HTTP这些年来,在迭代过程做了哪些优化,以及存在哪些不足?HTTP0.9、Http1.0和Http1.1、SPDY及2.0、Q
2022-12-16 michael007js 78
前言随着时间的推移,越来越多的主流应用已经开始全面拥抱Kotlin,协程的引入,Flow的诞生,给予了开发很多便捷,作为协程与响应式编程结合的流式处理框架,一方面它简单的数据转换与操作符,没有繁琐的操作符处理,广受大部分开发的青睐,另一方面它并没有响应式编程带来的背压问题(BackPressure)的困扰;接下来,本文将会就Flow如何解决背压问题进行探讨关于背压(BackPressure)背压问
2022-12-16 michael007js 138
前言自从jetbrains公司提出Kotlin协程用来解决异步线程问题,并且衍生出来了Flow作为响应式框架,引来了大量Android开发者的青睐;而目前比较稳定的响应式库当属Rxjava,这样以来目的就很明显了,旨在用Kotlin协程来逐步替代掉Rxjava;仔细思考下,真的可以完全替代掉Rxjava么,它的复杂性和多样化的操作符,而协程的许多API仍然是实验性的,目前为止,随着kt不断地进行版
2022-12-16 michael007js 132
1、背景最近对我的应用做了一些小的改动,准备上架 Google Play. 本以为小事一桩,没想到要做非常多的改动。其中一个改动是谷歌要求 billing 库升级到 4.0 及以上版本。此外,另一个比较大的改动是要求升级目标版本到 31.我之前从 29 升级到 30 那次改动已经非常大了。这次应该不会太多改动,没想到总归还是 too young too simple, sometimes naiv
2022-12-16 michael007js 237