Android框架
文章平均质量分 97
RikkaTheWorld
一个OTAKU
展开
-
Android MVI 架构学习
这些年来,Android 上发展了多种主流架构,从最开始的MVC,到Clean和MVP,再到现在最火热的MVVM,可以说架构发展一直很卷,这不,MVVM还没有用个几年呢,MVI就出来了。要说 Android 架构卷,实则不然,上面说的这些架构其实根本不是来自 Android 的,而是源自于Web,即大前端, Web 由于其自身特性(还不算完全成熟,业务多且杂,热部署等),版本迭代速度巨快,技术的更新迭代也因此很快,上面这些架构最早就是在前端所应用和发展出来的, 而移动端则是直接抄来,跟着Web的步伐前进。.原创 2022-08-29 20:23:38 · 3185 阅读 · 3 评论 -
Jetpack Compose 中的状态管理
Compose是用声明式来描述UI,注解所修饰的函数必须是一个没有返回值的纯函数,就算有副作用也是可控的,副作用的管理有Effect,之后再去了解。函数式编程和状态机是矛盾的、冲突的。Text(text="$id")//展示文案的TextViewTextButton(onClick={id++////每次点击Button都对id加1这里要如何改变上面Text的文案??????}){Text(text="点击我对id加1")}}$id因为。...原创 2022-07-31 20:29:27 · 1017 阅读 · 0 评论 -
Jetpack学习之 ViewModel
生命周期组件三巨头 Lifecycle、 LiveData、 ViewModel,他们都是很好的搭档,基本都是组合使用。目录1. 概述1.1 历史1.2 ViewModel的作用2. 使用2.1 自定义 ViewModel参考文章1. 概述1.1 历史在 ViewModel 之前, Google就推出了 MVVM 架构,在2015年时,就为该架构提供了支持库 DataBinding, 但是它的推行并不顺利,它起初排查问题较难,被许多开发者诟病。虽然发展至今,已经迭代到一个很完善的版本,但是使用量依原创 2021-03-17 11:39:37 · 296 阅读 · 1 评论 -
Jetpack学习之 LiveData
LiveData 是 Google 推荐的基于观察者的数据持有者,可以认为是一个轻量级的RxJava。一般来说不会单独使用,会和其他组件一起搭配,最常用的就是 ViewModel 了。目录1. 概述1.1 什么是LiveData1.2 为什么使用LiveData2. 使用2.1参考文章1. 概述1.1 什么是LiveData官方定义:LiveData 是一种可观察的数据存储器类。与常规的可观察类不同,LiveData具有生命周期感知能力,意指它遵循其他应用组件(如 Activity、Frag原创 2021-03-16 16:58:32 · 256 阅读 · 2 评论 -
Jetpack学习之 Lifecycle
Lifecycle 用于帮助开发者管理 Activity 和 Fragment 的生命周期,由于 Lifecycle 是 LiveData 和 ViewModel的基础, 所以要了解后面那两位,需要先学习 Lifecycle。目录1. 概述1.1 Lifecycle定义1.2 为什么使用Lifecycle2. 使用2.1 导入1. 概述1.1 Lifecycle定义Lifecycle 组件用来感知另外一个组件(Activity、Application、Fragment)的生命周期。1.2 为什么原创 2021-03-14 17:56:34 · 227 阅读 · 0 评论 -
Jetpack学习之 Hilt
目录1. 概述1.1 依赖注入(DI)概念1.2 为什么在代码中使用外部去注入依赖1.2.1 满足合理的架构设计1.2.2 满足一些数据共享场景1.3 Hilt是什么1.4 Hilt使用地方2. Hilt使用2.1 导入1.2 一个简单的例子2.3 接口依赖注入例子2.4 相同类型的依赖注入2.5 第三方依赖注入参考文章1. 概述随着Android 11 的发布,Jetpack家族新添了 Hilt 和 App Startup等成员。而 Hilt 是被定义为 依赖注入框架而被发布。什么?又是依赖注入框原创 2021-01-02 17:53:54 · 441 阅读 · 0 评论 -
Android 网络性能优化(3)复用连接池
1. 概述复用连接池是一个优化连接的技术,在Android中,功能强大的OkHttp已经帮我们实现了这个技术,使我们不用再担心多请求时的性能低下。虽然已经帮咱实现了,但是我们可以学习学习(所以该篇比较简单),顺便可以重温下OkHttp的源码。该篇承接 Android 网络性能优化(2)DNS优化,在拿到服务器ip后,我们客户端和服务端需要建立Socket,走Tcp的三次握手,在请求完成后通过四次分手关闭Socket。下图为三次握手流程:如果程序产生了频繁的、数量较多的 网络请求,大量的连接每次都要握原创 2020-10-08 15:45:29 · 1764 阅读 · 0 评论 -
RecyclerView浅析
属于查漏补缺,因为之前一直没有对RecyclerView、ListView做技术总结,平时用就用了,但是像ViewHoder、RecyclerView的缓存机制并没有进行系统的学习,所以这次通过在RecyclerView使用上和源码上进行一个总结。1. ListView和RecyclerView的区别首先,ListView和RecyclerView他们的作用是一样的:在有限的手机屏幕上显示大量(无限)的View。而RecyclerView之所以有个Recycler,是因为一个View如果被显示了并且通原创 2020-05-16 18:57:16 · 465 阅读 · 0 评论 -
Dagger2进阶学习
Dagger2和EventBus、ButterKnife一致,使用编译时注解来完成中间代码的自动生成,然后通过调用生成的代码来完成依赖注入。使用方法就不做讲解,后续的话想写一个 Dagger+MVP的模板。这边就先分析Dagger2的一些源码。1.注解定义我们先来看一下Dagger中使用的几个注解,先不看 @Scope、@Singleton @Subcomponent,后面再学。总所周知...原创 2020-04-29 10:34:13 · 343 阅读 · 0 评论 -
Android Picasso笔记
学习的blog来自 传送门1 传送门2 对Picasso的底层实现有一定的说明关于picasso的使用 首先是构建依赖compile 'com.squareup.picasso:picasso:2.5.2'然后进行最基础也是最常用的设置图片 Picasso.with(this).load(R.mipmap.head).into(avatar); Picasso.get...原创 2018-06-26 15:51:58 · 171 阅读 · 0 评论 -
EventBus索引加速探究
EventBus在3.0后推出了索引加速(自己的AnnotationProcessor实现),来优化EventBus对 @Subscribe方法的查找速度。EventBus的官方说明中有这么一段:译为:我们墙裂建议你使用 EventBus注解器和它的订阅者索引,这样会避免一些因为使用反射而导致的问题。这说明EventBus本身不会自己使用注解器,需要我们添加才会使用。由于之前一直没有在...原创 2020-04-23 17:29:04 · 458 阅读 · 0 评论 -
Glide load源码、缓存机制分析
我们知道Glide链式调用最重要的就是into(),而 into()最终会调用 load()。1.load源码分析1. load流程我们来分析一下 load()做了什么事情。 public <R> LoadStatus load(...) { Util.assertMainThread(); long startTime = VERBOSE_I...原创 2020-04-21 20:46:35 · 347 阅读 · 0 评论 -
Android 深入Http(5)从Retrofit源码来看Http
7、Retrofit源码角度来Http前言本篇Blog是Android深入Http的最后一篇。也是是说写完本篇blog,我在Android关于Http的方面已经有了足够的开发基础了,以后至少见到关于Http这些的代码,我都能大概知道它在表达什么,要做什么。Retrofit的低层实现是OkHttp,我们之前已经基本学习过了OkHttp,所以在看Retrofit时有一些内容会有相似之处。我之...原创 2019-07-06 20:50:27 · 893 阅读 · 0 评论 -
Android 深入Http(4)从OkHttp源码来看Http
6、OkHttpOkHttp就是Http在Android上的实现我们先来看一下他的使用方法(下面截取自官方文档):emm没什么好讲的,入口就是 execute(),但这是同步的,我们需要改成异步的,就是enqueue()换成自己写的,不封装就是这样: OkHttpClient client = new OkHttpClient(); client.newC...原创 2019-07-05 20:29:52 · 209 阅读 · 0 评论 -
ButterKnife源码探究(附实现自定义注解处理器)
今天直接解决ButterKnife的源码,Butter Knife直译过来就是黄油刀。它使用编译时注解的方式来完成Android中控件和点击事件的绑定。不用再重复的去写findViewById以及setOnClickListener代码了,提升了开发效率,解放了开发者的双手。编译时注解编译时注解的定义是:程序在编译阶段,根据注解生成想要生成的任何文件或者其他的逻辑处理。这里使用的是B...原创 2019-03-24 16:16:20 · 390 阅读 · 2 评论 -
Retrofit源码浅析
今天来分析Retrofit2的源码。(2.3版本)这里使用了一个关于获取github的用户信息的示例,源码在:示例源码展示首先要知道Retrofit是通过动态代理的方式创建各种网络接口的代理。至于动态代理这里就不做阐述了。我们通过其使用流程来观察其代码的使用:1、创建Retrofit对象Retrofit的使用从创建Retrofit对象开始:Retrofit.Builder buil...原创 2019-03-31 16:33:36 · 247 阅读 · 0 评论 -
写给Rikka自己的RxJava2说明书
前言今天来学习并总结RxJava2。具体学到多深我不知道…反正就是一个阶段性的总结的blog。因为之前用过但是不是很顶,公司的项目的话在用RxJava1,之后的重构应该会用RxJava2,所以这之前得认真学习一哈。今天主要从实际开发出发,比如Retrofit+RxJava2的例子,然后从例子中去剖析RxJava的用法、特点。尽量写的比较简单好懂(本来本篇blog讲的就不深,如果还写的天马行...原创 2019-07-07 17:28:37 · 831 阅读 · 0 评论