- 博客(16)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 EventBus源码分析
基本使用引入 在模块gradle脚本中引入EventBusimplementation 'org.greenrobot:eventbus:3.2.0'定义事件public static class MessageEvent { /* Additional fields if needed */ }订阅事件 通过Subscribe订阅事件.注解中包含许多参数,如线程环境,事件优先级,以及是否为粘性事件./*** 订阅事件* 运行在UI线程中* 优先级为1* 非粘性事件*/
2021-08-21 23:07:39
497
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 OkHttp源码分析(二)
OkHttp源码分析前言OkHttp最重要的两个技术线程复用,连接复用,线程复用体现在Dispatch类中,在OkHttp源码分析(1)中已经分析,而连接复用则体现在OkHttp的拦截器中。承接上篇文章,OkHttp的核心是拦截器,一系列的拦截链通过责任链的设计模式实现了上下文的传递与整体功能的衔接。在RealCall类中getResponseWithInterceptorChain()中,可以看到这个责任链的整体结构 internal fun getResponseWithIntercepto
2021-03-31 10:56:45
224
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 OkHttp源码分析(一)
OkHttp 源码分析集成采用[Gradle][https://gradle.org]构建方式集成最新版本的[OkHttp][https://github.com/square/okhttp]dependencies { implementation "com.squareup.okhttp3:okhttp:4.9.0"}使用初始化 // 初始化客户端 val httpClient:OkHttpClient = OkHttpClient.Builder()
2021-03-24 09:49:09
337
原创 Retrofit源码解析
Retrofit 源码分析知识预热JAVA泛型类型typedescriptionexampleremarkParameterizedType参数化类型,通常意义上的泛型类型类实例List,Map<K,V>TypeVariable类型化变量 泛型变量T t,K k,V vGenericArrayType泛型数组List[], T[],WildcardType通配符类型List<? extends String>
2021-08-20 14:33:58
338
原创 Web入门----Javascript对象学习
实例对象与new命令对象是什么对象是单个实物的抽象。对象是一个容器,封装了对象状态(属性)与行为(方法)构造函数 javascript语言体系不是基于类,而是基于构造函数(constructor)与原型链(prototype)的。 javascript语言使用构造函数作为对象模板。所谓“构造函数”,就是专门用来生成实例对象的函数。他就是对象的模板,描述实例对象的基本...
2019-09-06 16:30:53
155
原创 Web入门----css中伪类
CSS中的选择器基本选择器通用选择器<style> *{ margin:0px; padding:0px; }</style>类型原则器<style> p{ background-color:white; }</style>类选择器<style> ....
2019-08-20 11:55:49
411
原创 Web入门----表单元素
基本表单元素一个基本的表单只需要三个元素,form,input,button元素。<head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-...
2019-08-20 11:44:15
795
原创 JQuery 学习(一)
JQuery 核心$ 和 $() JQuery的绝大多数方法都是对象方法,但也存在部分的非对象方法,这部分被称之为核心方法。对象方法和核心方法的命名空间不同。具体如下所示// 这是一个对象方法,它的命名空间为$.fn,它通常跟一个选择器;$('h1').remove(); // 这是一个核心方法,它的命名空间为$。它前面不跟选择器;$.each() 他们之间的区别如下...
2019-08-15 19:17:10
174
原创 Sass学习
环境搭建安装ruby下载网址:http://rubyinstaller.org/downloads/安装sassgem install sass;sass -version 查看sass版本;sass -h 查看sass 所有命令;sass-convert origin.scss target.css;//转换;sass input.scss output.css...
2019-07-26 11:29:44
181
原创 Android:那些年错过的Gson(二)--自定义序列化与反序列化
在上篇文章里已经讲解过Gson的基本操作,这应该算是一个简易的基础入门吧。接下来,我们要尝试着如何自定义的去实现我们需要的序列化与反序列化操作。在讲解技术之前,先谈谈我们为什么需要去实现自定义的序列化与反序列化。说起这个为什么,其实说白了就一句话“不是所有前端想要的数据,你的后端都愿意给”,当然,你有个非常靠谱又非常乐于助人的后端除外,或者说,你是一个还算有姿色女程序员。如果这两者你都不是,我觉得...
2018-08-09 16:20:35
1936
原创 Android:那些年错过的Gson(一)--Gson的基本使用
概述序列化:将数据结构或对象转换成可用于存储或者传输的数据格式的过程;反序列化:将序列化过程中生成的数据还原成数据结构或者对象的过程;对于数据的序列化与反序列化,Gson框架一直是我的首选。自己封装了一套Retrofit+OkHttp+RxAndroid的简易框架,其中的数据解析一直用的是Gson。由于Retrofit框架内部已经完成了对Gson序列化与反序列化的操作封装,一直少有接触...
2018-08-08 19:34:01
1150
1
原创 Android:从绘制一张流程图来体验View的自定义过程(一)
概述 自定义View向来不是一个轻松的话题。虽然对于android原生开发而言,这只能算是一项基本的技能,但真正当我们拿到一份需要我们自定义去实现的需求的时候,多少还会有点手足无措。具体是什么原因,我也不知道,也许,“菜,是原罪”。‘’“业精于勤,荒于嬉”,也许就是我们每一次需要的去践行这种需求的时候,内心的那一点点惰性促使我们刻意地绕过这种实践机会。久而久之,...
2018-08-06 11:54:22
5506
1
原创 Android:Okhttp+Retrofit+Rx+RxLificycler+Fragmenation框架搭建自己的技术堆栈(一)
自己独立开发一个新项目。从技术选型到框架构建,再到具体的代码编辑,单元测试,全部由一个人负责。(说白了,就是把你扔那里,看你能弄出什么幺蛾子)。特此,在这里记录自己的开发过程。 在没看到产品需求和设计之前,自己先确定大概的项目框架和技术选型。 MVP的设计模式,最大程度上解耦Activity和业务逻辑的关系; OkHttp+Retrofit...
2018-05-26 18:03:03
417
原创 Android 动态权限适配方案总结
从Android6.0 棉花糖开始,Google调整了应用的权限申请方案。调整之后的用户授权,不仅仅体现在用户安装应用之时,更为重要的是,对于权限层级为危险的用户权限,需要在应用运行时向其授权,简称,动态授权。动态授权方案不仅可以简化应用安装过程,用户在安装或者更新过程中可以不需要授予权限,而且更为重要的是可以实现用户对应用功能进行更多的控制,从而达到增强用户隐私的保护。 ...
2018-05-19 19:56:32
15639
原创 Android版本跟新实现方案。
Android版本跟新的实现方式有很多种。 1.渠道更新 正常的版本迭代开发,完成后提交渠道审核,审核后用户可以在渠道市场中下载最新的应用。这种算是比较常见app跟新方式,不过这种方式至少存在几种弊端1.渠道审核周期比较长,审核标准高,无法实现app频度比较高的版本迭代(当然,这种需求比较常见的是用热更新解...
2018-05-14 17:04:47
655
1
原创 Android无限循环自动滚动信息展示
第一次在csdn上写博客,心里还有点小激动,请问一下在座的各位,怎么样才能装像不是第一次 写博客的样子?如果没人知道的话,我待会再来问问。 目前正在开发一款彩票类应用。应用中有一个需求,需要轮训展示中奖用户信息。具体如下所示:...
2018-05-08 17:38:52
22250
8
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人