朱利源的博客

既然选择了远方.便只顾风雨兼程

Gradle入门(一)--Groovy常用语法

概述 Groovy是一种可以用于构建的DSL,基于Jvm支持所有的Java语法,同时又对Java进行了扩展,提供了大量的语法糖去简化我们的代码。在开发中既能像Java一样用面向对象的方式编写,也能像脚本一样用面向过程的方式编写。而本篇我们主要介绍Groovy在Gradle脚本中常用的语法,如果你想...

2019-05-23 14:26:46

阅读数 49

评论数 1

组件化实践

组件化方案 近期公司有组件化的打算,因此对市面上的方案进行了调研,目前已经整理出一套作为项目组件化的方案,这里分享一波,当然组件化是没法一步到位的,中间肯定少不了踩坑优化,所以本篇也会持续更新。 那么我们先说说组件化是干嘛的吧,组件化就是将单模块的项目拆成多个,并且每个模块可以单独运行。 WTF!...

2019-04-11 21:12:43

阅读数 147

评论数 0

Android插件化初体验

最近把Activity启动流程整体看了一遍,估摸着弄个啥来巩固下,发现插件化正好是这块技术的实践,而说道插件化其实有好几种实现方式,这里我用的是hook的方式实现,主要目的呢是为了对activity启动流程有个整体的认识,当然了本篇的插件化也只是一个demo版本并没有任何兼容适配,重在流程和原理...

2018-12-27 16:00:33

阅读数 564

评论数 8

View绘制源码浅析(二)布局的测量、布局、绘制

前言 在第一篇View绘制源码浅析(一)布局的加载我们知道了setContentView()完成了DecorView的创建,并且将xml中的布局标签转换成了对应的View、属性转换成了对应的LayoutParams然后添加到了id为content的布局上,也就是说完成了布局对象的创建并且和Deco...

2018-12-14 19:05:51

阅读数 167

评论数 0

View绘制源码浅析(一)布局的加载

概述 View的绘制流程大致可以分为两大块,一块是setContentView()和View显示在屏幕上这个整体流程的梳理,另外一块是measure、layout、draw细节的实现,由于内容比较多所以我准备分两篇博客讲述。 那么本篇先从整体入手,分析下setContentView()和View显...

2018-12-04 14:46:57

阅读数 237

评论数 0

Android开发应该知道的HTTPS相关知识

前言 越来越多的网站和APP将请求协议从HTTP转换到了HTTPS,那么作为安卓程序员我们也有必要了解下HTTPS,不过本篇文章并不想讲太多难懂的理论,更多的是讲述HTTPS是如何实现数据加密并且身份验证的,除此之外还有个额外补充是关于Charles这类截包软件如何截取HTTPS消息的。 在开始之...

2018-12-01 18:39:25

阅读数 385

评论数 0

SparseArray源码浅析

SparseArray源码浅析 前言 最近有小伙伴去面试了,在群里分享的面试题有一道是关于SparseArray的,本来是不想看的o(╥﹏╥)o,没想到是个面试题,那没办法只能看看了。 概述 本文还是跟前面分析HashMap、LruChache的方式一样分别介绍构造方法、增、删、改、查方法。 这里...

2018-11-18 20:47:55

阅读数 159

评论数 1

Android 手动实现热更新

前言 在上篇Android ClassLoader浅析中我们分析了安卓ClassLoader和热更新的原理,这篇我们在上篇热更新分析的基础上写个简单的demo实践一下。 概述 我们先回顾下热更新的原理 PathClassLoader是安卓中默认的类加载器,加载类是通过findClass()方法,而...

2018-10-30 19:55:59

阅读数 1311

评论数 7

Android ClassLoader浅析

前言 最近在看Tinker的原理,发现核心是通过ClassLoader做的,由于之前也从未接触过ClassLoader趁着上周末看了安卓ClassLoader相关源码,这里分享一发安卓的ClassLoader和热更新的实现原理。 ClassLoader 首先我们要知道,程序在运行时要把对应的类加载...

2018-10-26 17:01:01

阅读数 641

评论数 1

LruCache源码解析

前言 本篇将介绍LruCache,而LruCache是用LinkedHashMap实现的,LinkedHashMap继承HashMap所以没看过HashMap的先看下我另外篇博文HashMap源码解析(JDK8)再来看本篇。 接下来是正菜LruCache不过吃之前我们先看下前菜LinkedHash...

2018-10-12 16:13:04

阅读数 136

评论数 0

HashMap源码解析(JDK8)

前言 这段时间有空,专门填补了下基础,把常用的ArrayList、LinkedList、HashMap、LinkedHashMap、LruCache源码看了一遍,List相对比较简单就不单独介绍了,Map准备用两篇的篇幅,分别介绍HashMap和(LruCache+LinkedHashMap),因...

2018-10-11 17:09:49

阅读数 149

评论数 0

关于Android MvvM的一些体会

关于Android MvvM的一些体会 前言 由于我司项目较老有很多历史包袱代码结构也比较混乱,需求复杂的页面动辄activity中1000多行,看着很是头疼,于是趁着加班提前做完需求余下的时间学习了mvvm对项目部分功能进行了改造,目前已经使用3个版本了,本篇博文分享下我使用的感受。 准备 ...

2018-09-26 10:19:14

阅读数 3691

评论数 1

rxjava操作符结合使用场景简介

rxjava操作符结合使用场景简介 前言 本文将通过实际的例子来介绍rx相关的操作符,如果对rxjava还不熟悉的同学请先查看rxjava相关基础姿势再来查看本文 准备 本文依赖rxjava版本如下 implementation 'io.reactivex.r...

2018-06-26 16:28:31

阅读数 542

评论数 8

WebSocket安卓客户端实现详解(三)--服务端主动通知

WebSocket安卓客户端实现详解(三)–服务端主动通知本篇依旧是接着上一篇继续扩展,还没看过之前博客的小伙伴,这里附上前几篇地址 WebSocket安卓客户端实现详解(一)–连接建立与重连WebSocket安卓客户端实现详解(二)–客户端发送请求终于是最后一篇啦,有点激动\ ( ≧▽≦ ) /...

2017-08-06 13:46:57

阅读数 7614

评论数 25

WebSocket安卓客户端实现详解(二)--客户端发送请求

WebSocket安卓客户端实现详解(二)–客户端发送请求本篇接着上一篇讲解WebSocket客户端发送请求和服务端主动通知消息,还没看过第一篇的小伙伴,这里附上第一篇链接WebSocket安卓客户端实现详解(一)–连接建立与重连.本篇依旧干货十足内容很多所以我们还是先热身下客户端发送请求为了方便...

2017-08-06 11:02:08

阅读数 14330

评论数 24

让你不再俱怕Fragment State Loss

让你不再俱怕Fragment State Loss 使用过Fragment的人我相信对臭名昭著的状态丢失问题(IllegalStateException: Can not perform this action after onSaveInstanceState)一定不会陌生。曾经被这个问题...

2017-07-22 23:07:59

阅读数 551

评论数 1

WebSocket安卓客户端实现详解(一)--连接建立与重连

今年在公司第一个需求就是基于websocket写一个客户端消息中心,现在已经上线很久了在司机这种网络环境平均一天重连8次,自认为还是不错的.当时写的时候那个心酸啊,主要因为第一次写都不知道该从哪下手,没有方向.所以这里我将尽可能详细的跟大家分享出来. 本篇内容会比较多,先来段舞蹈热身下.我准备按如...

2017-06-10 00:07:03

阅读数 51606

评论数 28

Thread->线程池

Thread->线程池前言Callable与Future在介绍线程池前,我们先介绍下Callable与Future因为等会封装异步任务会用到.而异步任务Runnable相信都在熟悉不过了,Callable与Runnable类似,但Callable有返回值.public interface C...

2017-05-19 14:07:41

阅读数 654

评论数 1

Thread->sleep、wait、join使用

Thread sleep、wait、join使用这里先介绍join,然后把两个有关联的sleep和wait一起介绍.join()这个方法比较好理解,当前线程等待指定线程终止后在执行,将两个交替执行的线程合并为顺序执行的线程.比如在B线程中调用A线程的join()方法,直到A线程执行完毕,B线程才会...

2017-05-04 11:38:55

阅读数 1377

评论数 2

泛型(二)->擦除&擦除带来的问题

泛型(二)->擦除&擦除带来的问题 本篇首先介绍泛型的擦除,然后围绕泛型擦除所带来的问题进行精确打击,话不多说,我们直接开始正文. 文中很多例子都会用到Pair这个对象,这里统一声明.public class Pair<T> { private T first;...

2017-03-19 18:46:38

阅读数 2492

评论数 5

提示
确定要删除当前文章?
取消 删除