
Android开源框架
文章平均质量分 93
丶笑看退场
习惯就是人生最大的指导
展开
-
【源码解读】抽丝剥茧的分析ViewModel的核心原理
ViewModel背景ViewModel 类旨在以注重生命周期的方式存储和管理界面相关的数据。ViewModel类让数据可在发生屏幕旋转等配置更改后继续留存。摘自 ViewModel概览详细讲,ViewModel有如下几个特点:对于简单数据,Activity被销毁的时候,可以使用onSaveInstanceState()方法从onCreate中恢复其绑定数据,但不适用数量较大的数据,如用户列表或位图。而Viewmodel支持大量数据,也不需要序列化和反序列化操作。视图控制器经常需要进程可能需原创 2021-12-12 15:17:34 · 1641 阅读 · 0 评论 -
【源码解读】最详细的LiveData分析,从未如此丝滑
前言根据Jepack官方文档介绍:LiveData 是一种可观察的数据存储器类。与常规的可观察类不同,LiveData 具有生命周期感知能力,意指它遵循其他应用组件(如 Activity、Fragment 或 Service)的生命周期。这种感知能力可确保 LiveData 仅更新处于活跃生命周期状态的应用组件观察者。如果观察者(由 Observer 类表示)的生命周期处于 STARTED 或 RESUMED 状态,则 LiveData 会认为该观察者处于活跃状态。LiveData 只会将更新通知给原创 2021-12-05 23:44:25 · 2256 阅读 · 0 评论 -
【源码解读】Arouter是如何实现的
原理我们在代码里加入的@Route注解,会在编译时期通过apt生成一些存储path和activityClass映射关系的类文件,然后app进程启动的时候会拿到这些类文件,把保存这些映射关系的数据读到内存里(保存在map里),然后在进行路由跳转的时候,通过build()方法传入要到达页面的路由地址,ARouter会通过它自己存储的路由表找到路由地址对应的Activity.class(activity.class = map.get(path)),然后new Intent(),当调用ARouter的withS原创 2021-11-17 00:53:53 · 748 阅读 · 0 评论 -
【源码解读】OkHttp内部剖析探究
OkHttp内部关键在于拦截器的处理来实现,把网络请求封装到各个拦截器来实现,实现了各层的解耦。我们首先发起一个请求://创建okHttpClient对象OkHttpClient okHttpClient = new OkHttpClient.Builder() .connectTimeout(6, TimeUnit.SECONDS) .readTimeout(6, TimeUnit.SECONDS)原创 2021-11-13 18:19:17 · 694 阅读 · 0 评论 -
OkHttp源码探究
网络同步请求Interceptor:是Okhttp最核心的一个东西,不要误以为它只负责拦截请求进行一些额外的处理(例如 cookie),实际上它把实际的网络请求、缓存、透明压缩等功能都统一了起来,每一个功能都只是一个 Interceptor,它们再连接成一个 Interceptor.Chain,环环相扣,最终圆满完成一次网络请求。使用了责任链模式:主要用于Interceptor它包含了...原创 2018-11-12 10:50:52 · 193 阅读 · 0 评论 -
Retrofit源码探究
简要原理,将一个Java接口翻译成一个Http请求,然后用Okhttp去发送这个请求精华代码,@SuppressWarnings("unchecked") // Single-interface proxy creation guarded by parameter safety. public <T> T create(final Class<T> servic...原创 2018-11-12 10:47:52 · 224 阅读 · 0 评论 -
Picasso源码解读
Picasso是Square公司出品的一款非常优秀的图片加载库,它可以帮我们完成一些android中处理的图片,使用最小的内存来完成图片的过渡。使用的方法如下:Picasso.with(context).load(“image url”).into(imageView);源码剖析我们就根据图片显示的这一条流程下来,一步步探究。先看上面一行代码public static Picasso...原创 2018-11-12 10:44:43 · 263 阅读 · 0 评论 -
Volley源码探究
volley提供的功能: Json,图像等异步下载网络请求的排序(scheduling)网络请求的优先级处理缓存多级别取消请求和 Activity 的生命周期联动(Activity 结束时同时取消所有网络请求)Volley的优点非常适合进行数据量不大,但通信频繁的网络操作可直接在主线程调用服务端并处理返回结果可以取消请求,容易扩展,面向接口编程网络请求线程NetworkDisp原创 2017-01-22 13:16:59 · 1395 阅读 · 2 评论 -
Realm学习
Android数据库Realm学习(一)基本使用 Realm for Android快速入门教程 Realm Android简单使用说明 realm官方文档http://www.jianshu.com/p/a506ee4afecb错误记录 1. 同时引用ButterKnife和Realm编译时可能会出现下述错误:Error:Execution failed for task ':app:tr原创 2016-09-06 10:54:53 · 515 阅读 · 0 评论 -
Dagger2
首先Dagger的引入Dagger2的注解Dagger2的流程听说Dagger2能够通过依赖关系并且不用通过手写的大量模板代码中的对象引用将会由它给你创建并传递到兑现各种。这是我第一步的认识。首先Dagger的引入:在整个项目的build.gradle中加入:dependencies { // other classpath definitions here class原创 2016-09-06 10:48:36 · 731 阅读 · 0 评论 -
Android EventBus实战 没听过你就out了
转载请表明出处:http://blog.youkuaiyun.com/lmj623565791/article/details/40794879,本文出自:【张鸿洋的博客】1、概述最近大家面试说经常被问到EventBus,github上果断down了一份,地址:https://github.com/greenrobot/EventBus,的确是个不错的框架,主要用于事件的发布和订阅。EventBu转载 2015-12-14 15:40:58 · 382 阅读 · 0 评论 -
Android EventBus源码解析 带你深入理解EventBus
转载请标明出处:http://blog.youkuaiyun.com/lmj623565791/article/details/40920453,本文出自:【张鸿洋的博客】上一篇带大家初步了解了EventBus的使用方式,详见:Android EventBus实战 没听过你就out了,本篇博客将解析EventBus的源码,相信能够让大家深入理解该框架的实现,也能解决很多在使用中的疑问:为什么可以这么做转载 2015-12-14 15:42:55 · 473 阅读 · 0 评论