自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 一句话总结23种设计模式

1. 前言断断续续写了一段时间的设计模式,终于把经典的23种设计模式全写完了。下面对这些设计模式总结一下。2. 设计原则设计原则的介绍 : 设计模式的六大原则 即使我们之前没有专门看过这些原则,但是我们实际开发中或多或少都用到这些原则。实际上,这些原则的目的只有一个:降低对象之间的耦合,增加程序的可复用性、可扩展性、可维护性。优秀的设计模式就是基于这些原则去实现的。3.

2018-01-08 18:06:29 667

原创 提升开发效率之自定义Android Studio代码模板

1.前言有时,我们会使用一些重复的模板代码,通常都是使用CV大法来完成。但是,这样的搬砖效率并不高,因此,我们需要使用高级搬砖技能–自定义代码模板。我们使用Android Studio创建新工程时,可以选择不同的模板,然后Android Studio就会自动生成相应的代码模板了。如下图:这实际上是Android Studio内置的一些默认模板。我们先来研究一下内置的代码模板,然后再实现自定...

2019-07-16 10:45:53 493

原创 提升开发效率之修改Android Studio默认的project和module模板

1.前言每次使用Android Studio创建新的工程时,可能都需要手动去修改一些配置,有没有觉得很烦呢?下面教你如何修改Android Studio默认的project和module模板。整完这些之后,相信能够节省你三秒的时间喔~~本文主要介绍以下几种配置,可以按需去修改:1.移除单元测试2.配置私有maven库3.移除默认的V7库以及相关资源4.修改默认的.gitignore模...

2019-07-16 10:45:02 1583

原创 Android视图和布局优化实战演练

目录0.版权声明1.概述2.过度绘制(Overdraw)2.1 什么是过度绘制?2.2 如何检测过度绘制2.3 过度绘制优化2.3.1 移除布局中不需要的背景2.3.1.1 移除Window默认的Background2.3.1.2 移除控件中不需要的背景2.3.2 将layout层级扁平化2.3.2.1 使用Layout Inspector去查看layout的层次结构2.3.2.2 使用嵌套少的布...

2018-09-20 09:30:02 408

原创 Android内存泄露分析实战演练

目录@[TOC](目录)0.版权声明1.内存泄露简介1.1 什么是内存泄露1.2 内存泄露对APP性能的影响1.3 内存泄露产生原因分析1.4 常见的内存泄露点2.常见内存泄露例子及解决方案2.1 静态变量内存泄露单例模式造成的内存泄露2.2 非静态内部类(匿名类)内存泄露2.2.1 Handler内存泄露2.2.2 多线程引起的内存泄露2.3 集合类内存泄露2.4 未关闭资源对象内存泄露3. 常...

2018-09-18 11:00:47 605

原创 带你了解Android约束布局ConstraintLayout

目录1 ConstraintLayout简介2 引入ConstraintLayout3 相对位置4 尺寸约束5 宽高比6 百分比宽高7 位置偏向8 权重9 链10 Guideline辅助线11 小结ConstraintLayout是Android新推出的一个布局,其性能更好,连官方的hello world都用ConstraintLayout来写了。所以极力推荐使用ConstraintLayout...

2018-09-18 10:34:11 6355 2

原创 Android框架组件--LiveData的使用

1.前言LiveData是Google推出的一系列的框架组件的其中一个,它是一个可以被观察的数据持有类,能够感知Activity、Fragment等组件的生命周期。一个观察者去观察LiveData后,当观察者的生命周期处于STARTED或RESUMED状态时(即onStart()、onResume()、onPause()),LiveData的数据发生变化,则会通知观察者;若观察者处于其他状...

2018-08-01 17:14:09 4729 2

原创 Android框架组件--Lifecycle的使用

1.前言Lifecycle是Google推出的一系列的框架组件的其中一个,主要是用来感知Activity和Fragment的生命周期。本文主要介绍如何使用Lifecycle。2.一个常见的开发例子public class TestActivity extends Activity{ @Override protected void onCreate(@Nulla...

2018-07-25 15:05:12 6195 1

原创 使用Retrofit下载文件并实现进度监听

1.前言最近要做一个带进度条下载文件的功能,网上看了一圈,发现好多都是基于OkHttpClient添加拦截器来实现的,个人觉得略显复杂,所以还是采用最简单的方法来实现:基于文件写入来进行进度的监听。2.实现步骤2.1 设计监听接口根据需求设计一下接口:public interface DownloadListener { void onStart();//下载开...

2018-07-20 16:31:45 2790 4

原创 ThreadLocal源码剖析

1.ThreadLocal概述本文源码基于android 27。1.1 简介ThreadLocal提供了线程内的局部变量,这个局部变量是只存在于当前线程的。同时,它是独立于其他线程,即其他线程无法访问。这样就不会存在线程安全的问题了。1.2 常用方法 public void set(T value) //设置当前线程中变量的副本 public T ge...

2018-07-10 09:54:16 275

原创 Android消息机制分析:Handler、Looper、MessageQueue源码分析

1.前言关于Handler消息机制的博客实际上是非常多的了。 之前也是看别人的博客过来的,但是过了一段时间之后,一些细节也就忘了。 所以,就自己撸一篇,权当笔记,方便以后翻阅。这篇文章主要是分析Handler消息机制原理以及收集一些面试题来讲解,熟悉的话可以不用看了。本文源码基于android 27。2.Android消息机制概述2.1 本质Android的消息...

2018-07-05 12:00:54 365

原创 BroadcastReceiver广播的注册、发送和接收过程分析

1. 简介广播作为Android的四大组件之一,能够实现组件之间的通信。广播过程主要就是注册、发送和接收过程。广播使用了设计模式中的观察者模式:基于消息的发布 / 订阅事件模型,消息的生产者发布事件,而使用者订阅感兴趣的事件。因此,广播能够实现组件间的松耦合,即广播的发送者和接收者事先是可以不用知道对方存在的。接下来,我们来研究一下广播的注册、发送和接收过程的源码。本文源码基于androi

2018-07-03 10:20:26 1818 2

原创 RxJava的消息订阅和线程切换原理

0.版权声明1.前言本文主要是对RxJava的消息订阅和线程切换进行源码分析,相关的使用方式等不作详细介绍。本文源码基于rxjava:2.1.14。2. RxJava简介...

2018-06-13 09:49:10 2680 4

原创 Android 刘海屏适配全攻略

Android 刘海屏适配全攻略0.版权声明本文由玉刚说写作平台提供写作赞助,版权归玉刚说微信公众号所有 原作者:四月葡萄 版权声明:未经玉刚说许可,不得以任何形式转载1.前言先吐槽一下,刘海屏真丑。然而作为苦逼的开发者,还是要去适配刘海屏的。好了,吐槽完毕,进入正题。 这里主要是介绍一下Android P中刘海屏的适配以及Android P之前的适配。为什么要分开呢...

2018-06-08 10:04:50 17357 8

原创 从一个class文件深入理解Java字节码结构

前言我们都知道,Java程序最终是转换成class文件执行在虚拟机上的,那么class文件是个怎样的结构,虚拟机又是如何处理去执行class文件里面的内容呢,这篇文章带你深入理解Java字节码中的结构。1.Demo源码首先,编写一个简单的Java源码:package com.april.test;public class Demo { private int n...

2018-05-15 10:01:56 36904 48

原创 自定义View实践篇(2)- 自定义ViewGroup

1. 简介上一章:自定义View实践篇(1)- 自定义单一View 我们实现了自定义单一View,这章我们来看下自定义ViewGroup。2. 自定义ViewGroup自定义ViewGroup同样分为两类,一类是继承系统已有的ViewGroup(如:LinearLayout),另一类是直接继承ViewGroup类,我们分开来看下。2.1 继承系统已有ViewGroup

2018-03-19 19:21:14 407

原创 自定义View实践篇(1)- 自定义单一View

1. 简介前面分析了一大堆原理: 自定义View原理篇(1)- measure过程 自定义View原理篇(2)- layout过程 自定义View原理篇(3)- draw过程 现在来看看是如何实现自定义View:2.自定义View的分类自定义View可以分为两大类,一种是自定义单一View,另一种是自定义ViewGroup。具体如下图所示: 类型 实现 ...

2018-03-13 18:27:54 393

原创 自定义View原理篇(3)- draw过程

1. 简介View的绘制过程分为三部分:measure、layout、draw。 measure用来测量View的宽和高。 layout用来计算View的位置。 draw用来绘制View。measure过程可以查看这篇文章:XXX。layout过程可以查看这篇文章:XXX。本章主要对draw过程进行详细的分析。本文源码基于android 27。2. D...

2018-03-09 23:15:42 350

原创 自定义View原理篇(2)- layout过程

1. 简介View的绘制过程分为三部分:measure、layout、draw。 measure用来测量View的宽和高。 layout用来计算View的位置。 draw用来绘制View。本章主要对layout过程进行详细的分析。本文源码基于android 27。2. Layout的始点跟measure一样,layout也是始于ViewRootImpl

2018-03-09 11:05:09 475

原创 自定义View原理篇(1)-Measure过程

1. 简介View的绘制过程分为三部分:measure、layout、draw。 measure用来测量View的宽和高。 layout用来计算View的位置。 draw用来绘制View。本章主要对measure过程进行详细的分析。本文源码基于android 27。2. measure的始点measure是从ViewRootImpl的performTrav...

2018-03-08 14:53:28 603

原创 ViewRootImpl介绍

1. 简介从上一篇文章:从setContentView揭开DecorView 中可以看到,Activity是怎么将我们的布局加载到DecorView,但是这时还不是可见的,因为这时布局还没有绘制。那么它是怎么绘制的,我们来研究一下。本文源码基于android 272. 源码分析虽然DecorView已经被创建出来了,但是目前DecorView跟PhoneWindow是没有任何关

2018-02-27 11:16:24 2692

原创 从setContentView揭开DecorView

1.简介看源码时我们会经常遇到DecorView,那么这个DecorView到底是什么呢,我们来研究一下。本文源码基于android 27。2.代码分析通常,我们在Activity的onCreate()中都有这么一句代码: setContentView(R.layout.main_activity);那么这代码到底是干了啥呢,我们点进去看下。2.1 Activit...

2018-02-26 17:46:31 970

原创 ActivityRecord、TaskRecord、ActivityStack以及Activity启动模式详解

1.简介先来张简单的关系图: 一个ActivityRecord对应一个Activity,保存了一个Activity的所有信息;但是一个Activity可能会有多个ActivityRecord,因为Activity可以被多次启动,这个主要取决于其启动模式。一个TaskRecord由一个或者多个ActivityRecord组成,这就是我们常说的任务栈,具有后进先出的特点。Activit...

2018-02-26 17:21:25 1855

原创 Activity启动过程详解

1. 简介本文源码基于android 27。 startActivity的流程较复杂,我们这里将其过程分成三部分: startActivity–>ActivityManagerService ActivityManagerService–>ApplicationThread ApplicationThread–>Activity 这样看起来稍微简单点。通

2018-01-25 17:34:48 2391

原创 Android的设计模式-桥接模式

前言Android的设计模式系列文章介绍,欢迎关注,持续更新中: Android的设计模式-设计模式的六大原则 创建型模式: Android的设计模式-单例模式 Android的设计模式-建造者模式 Android的设计模式-工厂方法模式 Android的设计模式-简单工厂模式 Android的设计模式-抽象工厂模式 Android的设计模式-原型模式

2018-01-08 10:08:34 349

原创 Android的设计模式-外观模式

前言Android的设计模式系列文章介绍,欢迎关注,持续更新中: Android的设计模式-设计模式的六大原则 创建型模式: Android的设计模式-单例模式 Android的设计模式-建造者模式 Android的设计模式-工厂方法模式 Android的设计模式-简单工厂模式 Android的设计模式-抽象工厂模式 Android的设计模式-原型模式

2018-01-04 16:41:20 817

原创 Android的设计模式-享元模式

前言Android的设计模式系列文章介绍,欢迎关注,持续更新中: Android的设计模式-设计模式的六大原则 创建型模式: Android的设计模式-单例模式 Android的设计模式-建造者模式 Android的设计模式-工厂方法模式 Android的设计模式-简单工厂模式 Android的设计模式-抽象工厂模式 Android的设计模式-原型模式

2018-01-04 11:49:01 531

原创 Android的设计模式-装饰者模式

前言Android的设计模式系列文章介绍,欢迎关注,持续更新中: Android的设计模式-设计模式的六大原则 创建型模式: Android的设计模式-单例模式 Android的设计模式-建造者模式 Android的设计模式-工厂方法模式 Android的设计模式-简单工厂模式 Android的设计模式-抽象工厂模式 Android的设计模式-原型模式

2018-01-03 15:58:40 639

原创 Android的设计模式-适配器模式

前言Android的设计模式系列文章介绍,欢迎关注,持续更新中: Android的设计模式-设计模式的六大原则 创建型模式: Android的设计模式-单例模式 Android的设计模式-建造者模式 Android的设计模式-工厂方法模式 Android的设计模式-简单工厂模式 Android的设计模式-抽象工厂模式 Android的设计模式-原型模式

2018-01-02 17:57:27 670

原创 Android的设计模式-组合模式

前言Android的设计模式系列文章介绍,欢迎关注,持续更新中: Android的设计模式-设计模式的六大原则 创建型模式: Android的设计模式-单例模式 Android的设计模式-建造者模式 Android的设计模式-工厂方法模式 Android的设计模式-简单工厂模式 Android的设计模式-抽象工厂模式 Android的设计模式-原型模式

2017-12-27 19:25:31 914

原创 Android的设计模式-代理模式

前言Android的设计模式系列文章介绍,欢迎关注,持续更新中: Android的设计模式-设计模式的六大原则 创建型模式: Android的设计模式-单例模式 Android的设计模式-建造者模式 Android的设计模式-工厂方法模式 Android的设计模式-简单工厂模式 Android的设计模式-抽象工厂模式 Android的设计模式-原型模式

2017-12-26 17:28:48 781

原创 Android的设计模式-命令模式

前言Android的设计模式系列文章介绍,欢迎关注,持续更新中: Android的设计模式-设计模式的六大原则 创建型模式: Android的设计模式-单例模式 Android的设计模式-建造者模式 Android的设计模式-工厂方法模式 Android的设计模式-简单工厂模式 Android的设计模式-抽象工厂模式 Android的设计模式-原型模式

2017-12-25 17:33:34 523

原创 Android的设计模式-解释器模式

前言Android的设计模式系列文章介绍,欢迎关注,持续更新中: Android的设计模式-设计模式的六大原则 创建型模式: Android的设计模式-单例模式 Android的设计模式-建造者模式 Android的设计模式-工厂方法模式 Android的设计模式-简单工厂模式 Android的设计模式-抽象工厂模式 Android的设计模式-原型模式

2017-12-23 17:21:16 350

原创 Android的设计模式-中介者模式

前言Android的设计模式系列文章介绍,欢迎关注,持续更新中: Android的设计模式-设计模式的六大原则 创建型模式: Android的设计模式-单例模式 Android的设计模式-建造者模式 Android的设计模式-工厂方法模式 Android的设计模式-简单工厂模式 Android的设计模式-抽象工厂模式 Android的设计模式-原型模式

2017-12-21 16:06:45 489

原创 Android的设计模式-访问者模式

前言Android的设计模式系列文章介绍,欢迎关注,持续更新中: Android的设计模式-设计模式的六大原则 创建型模式: Android的设计模式-单例模式 Android的设计模式-建造者模式 Android的设计模式-工厂方法模式 Android的设计模式-简单工厂模式 Android的设计模式-抽象工厂模式 Android的设计模式-原型模式

2017-12-18 23:33:06 374

原创 Android的设计模式-备忘录模式

前言Android的设计模式系列文章介绍,欢迎关注,持续更新中: Android的设计模式-设计模式的六大原则 创建型模式: Android的设计模式-单例模式 Android的设计模式-建造者模式 Android的设计模式-工厂方法模式 Android的设计模式-简单工厂模式 Android的设计模式-抽象工厂模式 Android的设计模式-原型模式

2017-12-03 23:49:19 557

原创 Android的设计模式-迭代器模式

前言Android的设计模式系列文章介绍,欢迎关注,持续更新中: Android的设计模式-设计模式的六大原则 创建型模式: Android的设计模式-单例模式 Android的设计模式-建造者模式 Android的设计模式-工厂方法模式 Android的设计模式-简单工厂模式 Android的设计模式-抽象工厂模式 Android的设计模式-原型模式

2017-11-25 01:28:55 402

原创 Android的设计模式-模板方法模式

前言Android的设计模式系列文章介绍,欢迎关注,持续更新中: Android的设计模式-设计模式的六大原则 创建型模式: Android的设计模式-单例模式 Android的设计模式-建造者模式 Android的设计模式-工厂方法模式 Android的设计模式-简单工厂模式 Android的设计模式-抽象工厂模式 Android的设计模式-原型模式

2017-11-24 02:52:06 362

原创 Android的设计模式-观察者模式

前言Android的设计模式系列文章介绍,欢迎关注,持续更新中:1.定义定义对象间的一种一个对多的依赖关系,当一个对象的状态发送改变时,所以依赖于它的对象都得到通知并被自动更新。2.介绍观察者属于行为型模式。观察者模式又被称作发布/订阅模式。观察者模式主要用来解耦,将被观察者和观察者解耦,让他们之间没有没有依赖或者依赖关系很小。3.UML类图角色说明:Subject(抽象主题):又叫抽象被

2017-11-22 10:37:26 432

原创 Android的设计模式-责任链模式

前言Android的设计模式系列文章介绍,欢迎关注,持续更新中:1.定义一个请求沿着一条“链”传递,直到该“链”上的某个处理者处理它为止。2.介绍责任链模式属于行为型模式。多个对象中,每个对象都持有下一个对象的引用,这就构成了链这种结构。一个请求通过链的头部,一直往下传递到链上的每一个结点,直到有某个结点对这个请求做出处理为止,这就是责任链模式。责任链模式一般分为处理者与请求者。具体的处理者

2017-11-22 10:36:32 416

空空如也

空空如也

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

TA关注的人

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