自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 适应RxJava2思维习惯

RxJava有几个重要关键字,即函数响应式编程,观察者模式,事件发射,消费等等。以下这段话摘自其他文章Android 响应式编程 RxJava2 完全解析。鸣谢作者。响应式编程的组成为Observable/Operator/Subscriber,RxJava在响应式编程中的基本流程如下:这个流程,可以简单的理解为:Observable -> Operator1 -> Operat...

2019-12-12 20:33:20 193

原创 Android的非Google官方衍生品

Android的非Google官方衍生品什么是Android的Google官方衍生品Android WearAndroid AutoAndroid TVAndroid的非Google官方衍生品亚马逊FireOS不带上层UI的Android国内外手机厂商ROM第三方ROMAndroid非Google官方衍生品定制的内容什么是Android的Google官方衍生品所谓Android的衍生品即原生A...

2019-05-30 22:50:03 652

原创 深入浅出Java四种引用

深入浅出Java四种引用(未完)  Java的四种引用已是老生常谈了,一般由内存泄露的解决办法引出。然而真正理解其背后的设计原理,并灵活应用它们不是一件容易的事。以下是四种引用的基本概念,但如果你以为这是一篇 “概念解释+使用场景+示例代码”的三段式技术帖,花2分钟浏览和1分钟复制粘贴修改就可以get到新技能,那么你可能要失望了。因为我希望用人话将Java的四种引用阐述清楚,使人一旦理解,就不...

2018-06-26 18:05:02 283 1

原创 Builder模式演义(2)——OkHttp源码中的Builder模式

引言  在上一篇Builder模式演义(1)中介绍了Builder模式的标准形式,以及两种基本变换——链式调用和省略指挥者角色。本文将通过分析OkHttp源码阐述Builder模式的另外两种变换——省略抽象Builder角色和Product角色回炉再造。OkHttp源码中的Builder模式  OkHttp作为开源的Android网络请求框架,以URLConnection和HttpClient的替代

2017-03-17 02:10:52 2287

原创 Builder模式演义

引言  不用怀疑,你一定遇到和使用过它,它在Android源码和各种开源组件中是如此常见。这是一种你可以不知道怎么运用,但是知道了会欲罢不能的设计模式。定义  Builder模式(建造者模式,有人称作生成器模式),将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示。   很抽象?请看如下UML类图,进行直观的描述。UML类图  这是在许多书籍、网络资料中非常容易找到的标准Bu

2017-03-15 00:20:58 1026

原创 Android面试遇到的问题(2)

Android有哪几种Window类型?单例模式中的内部静态类方式为什么可以保证实例唯一?提示:类加载机制双亲委派SQLite使用中要注意什么?AMS了解过吗?是否使用过RxJava和EventBus?如何自己消息传递的解耦?AIDL的原理是什么?线程池使用多吗?

2017-03-07 00:19:49 822

原创 Java 内存从分配到泄露

Java内存划分为栈、堆、方法区等区域,其中栈保存的是方法的局部变量,随方法起随方法灭,不需要GC;堆保存所有对象的实例和数组,是GC和泄露的重点区;方法区保存的是类信息、常量、静态变量等静态信息,也需要GC。  堆内存的回收中,判断对象存活的算法有引用计数算法和可达性分析算法,引用计数算法无法解决对象间循环引用的问题,虚拟机通常采用可达性分析算法。  常见的垃圾回收算法有:标记 - 清除法、复制算法、标记 -

2017-02-26 19:03:04 1205 1

原创 LeakCanary使用指南(1)

引言  还在为不会使用MAT而烦恼吗?还在对着MAT工具解析出的hprof图拼命找内存泄露的源头吗?放弃挣扎吧,少年。Android Studio时代,我们使用LeakCanary——傻瓜式的内存泄露检测工具。如果你想了解引发Java内存泄露的深层原因,请移步Java 内存从分配到泄露 了解相关基础知识。简介  LeakCanary产自著名的Square公司,就是那个生产了网络请求框架OkHttp、

2017-02-25 03:49:57 3355 1

原创 Android面试遇到的问题(1)

数据结构和算法类顺序表和链表的区别? 顺序表随机访问快,插入删除慢;链表插入删除快,随机访问慢。栈和队列的区别? 栈:先进后出,队列:先进先出常用的排序算法有哪些? 冒泡排序、选择排序、快速排序、堆排序等。快速排序的实现思想是怎样?快速排序的时间复杂度是多少? 划分,在待排序的数列中随机选择一个x,然后通过比较最终确定它在数列中的最终位置。这个数将原数列分成三部分:比x小的数、x、

2017-02-14 10:13:38 1279 3

原创 理解装饰者模式

装饰者模式的书面定义是:“动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。”——语出《Android源码设计模式解析与实战》。

2017-02-11 11:55:51 1394

原创 怎样将自己的工程改造成库,并上传到Github作为依赖

点击Github上项目主页的Release一键发布后,打开JitPack官网https://jitpack.io/,在输入框中粘贴刚刚在Github上Release的项目的地址。点击**Look up**然后在弹出的输入框中点击**Get it** 完成库的生成。然后看到我们熟悉的添加依赖的指导。将Gradle和Maven的添加依赖的指导复制到项目的自述文件README.md中指导别人如何使用你的库。

2016-12-22 18:11:36 6400 7

原创 使用Fiddler对手机进行抓包

1、打开Fiddler-->Tools-->Options,选择第三个Tab Connections,勾选 Allow remote computers to connect。2、windows键+R-->输入cmd-->输入ipconfig回车查看本机IP。3、确保手机和电脑在同一网段内。点击进入所连接的WiFi的详情,在代理一项选择手动,然后在主机名中填写第二步中查看的电脑IP,端口号填8888。

2016-12-19 15:10:51 1352

原创 Retrofit中使用@PartMap实现带进度回调的文件上传

因项目重构需要,最近一直在研究Retrofit的使用,并且封装成适合自己项目的网络请求框架。因为我们的项目中已经和后台约定,所有请求都使用POST请求,并且只接受JSON格式的参数,返回结果也是JSON格式。因此,我要封装的网络请求框架只需考虑三种请求: Post with JSON, 就是向后台提交JSON数据 Upload with progress,就是实现带进度回调的文件上传 Download

2016-12-19 02:36:59 4151

原创 Retrofit2提交JSON格式的数据

上述代码的掣肘显而易见,那就是需要为每个请求都封装一个bean。使用这种方式的博友们还专门提供了自动生成这样的bean的工具类,可谓良苦用心。Java Web开发中也许习惯以bean作为查询条件,每张数据库表对应一个bean,很容易获得。即使bean中很多字段根本用不到,但是简单粗暴将整个bean传过去作为参数,使用起来非常方便。而以移动端的开发习惯,我们并不会为每个request封装一个特定的bean。而只会为每个

2016-12-06 01:56:09 5106

原创 Android源码中的观察者模式

在使用ListView时,数据改变后,我们会手动去调用ListView对应的adapter的setDataSetChanged()方法来通知ListView更新UI。换一种说法,ListView的UI是观察者,ListView对应的adapter中的数据是被观察者,ListView通过注册一个观察者到adapter中,以实现监听adapter的数据变化的目的。经过刨祖坟一般的Ctrl+鼠标左键之后,画出如下UML类图。图中可以看到,ListView注册到adapter中的观察者叫AdapterDataSet

2016-08-23 23:57:42 1402

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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