5 小王君

尚未进行身份认证

暂无相关简介

等级
TA的排名 6w+

Java系列之装饰模式

一,写在前面  在学习装饰模式之前,建议先了解代理模式。装饰模式和代理模式的类图结构几乎一样,仅仅是使用的目的有所差异,对比学习有助于理解装饰模式的使用。  假设有一个接口Human,一个接口的实现类Man。人类Human是可以跑步的,但是不能飞。  如果想给人类加上飞翔的翅膀,可以有三种解决方案:修改实现类Man的方法,但不符合开闭原则 给实现类Man添加一个子类,...

2018-09-22 17:08:40

Java系列之代理模式

一,写在前面    在学习设计模式前,建议对设计模式的六大原则有所了解。六大原则是指导方针,设计模式则是适用于不同场景的指导方针的具体实现。在文章观察者模式中对六大原则有简单的介绍,这里不再重复阐述。    为了更好去理解代理模式的思想,下面会讲到一个现实生活中的小栗子。大部分游戏爱好者应该知道,在游戏界有个灰色的产业叫做“代练”。尽管咱们对游戏如痴如醉,反复雕琢技术,提高意识,可能仍然很...

2018-09-22 12:25:14

Java系列之观察者模式

一,写在前面    学习任何设计模式前,建议先了解一波设计模式的六大设计原则。在学习了某一设计模式的用法后,再从6大原则出发去分析如此设计的好处,可以尽可能做到“知其然并知其所以然”。    Java系列的23种设计模式,都离不开6大设计原则的指导,各个模式只是使用的场景不同。核心目标都是:在满足业务需求的前提下,保证模块间的低耦合,以及代码的可维护,高扩展。二,设计6大原则单一职...

2018-09-09 14:34:17

点亮技能之Android6.0动态权限

一,写在前面    在sdk23以前,用户安装应用时必须同意开发者添加的所有权限,否则应用无法安装成功。对于开发者来说,只需要在清单文件里添加功能模块需要的权限,非常方便。对于用户来说,却是灾难性的,数据隐私完全暴露在应用面前。    于是,Google的Android团队在6.0版本推出了运行时权限系统,部分有关用户隐私的权限被划分为危险权限。对于开发者来说,普通权限的添加与以前并无两样...

2018-09-08 14:53:28

图文浅析之Android显示原理

一,写在前面本篇文章会以图文的方式介绍Android设备的显示原理,不会深入到源码去分析一些细节,阅读本篇文章会对显示原理有个感性的认识,以便更好的理解Android性能优化相关的原理。二,为什么要学习Android显示原理大家玩手机上的应用,会经常遇到卡顿的情况。作为应用层的开发者,就需要在应用层尽可能的避免卡顿的发生,提供给用户一个良好的用户体验。一个经常卡顿的App是灾难性的,它...

2018-09-02 01:13:35

源码解析之HashMap实现原理

目录一,写在前面二,栗子三,HashMap设计思路四,边界变量五,put方法六,resize方法七,get方法八,关于HashMap实现原理的问答题一,写在前面在日常开发中,HashMap因其可以存储键值对的特点经常被使用,仅仅知道如何使用HashMap是远远不够的。以知其然知其所以然的钻研态度,本篇文章将以图文,源码的方式去解析HashMap的实现原理。...

2018-08-26 00:32:40

源码解析之EventBus注册流程

一,写在前面EventBus的使用还是比较简单的,对于框架的使用,不仅仅是知其然,更要知其所以然,还可以学到框架里一些优秀的设计理念。本篇文章将从源码角度解析EventBus的注册流程,对框架的使用可参考文章EventBus的使用。二,EventBus构造方法在使用EventBus订阅事件时,一般会调用EventBus.getDefault()获取EventBus的实例,它返回一个系统...

2018-08-21 00:20:14

点亮技能之EventBus框架的使用

目录一,写在前面二,事件类型三,订阅事件四,订阅方法五,发送事件六,粘性事件的特点七,注销事件八,最后一,写在前面       本篇文章将会介绍EventBus 3.0版本的使用,值得一提的是,阅读本片文章前需要了解Java注解相关的知识点,可参考文章Java注解。EventBus是一个事件发布/订阅轻量级框架,用于在Activity,Fragment,Se...

2018-08-19 14:25:03

点亮技能之ButterKnife使用及原理

一,写在前面       这篇文章将介绍ButterKnife框架的一些基本使用,并会介绍ButterKnife的实现原理。由于ButterKnife是以注解的形式被使用,阅读本篇文章需要读者有Java注解相关的知识。对Java注解不太了解的可参考文章Java注解,文章中涉及注解的知识将不再阐述。本文将包括如下内容:ButterKnife框架背景介绍 为什么要使用ButterKnif...

2018-08-11 23:08:46

点亮技能之Java注解

 一,写在前面 本篇文章,将学习Java注解相关的知识点,包括注解的定义 注解的属性 元注解 如何使用注解 注解的提取版本:Java注解是jdk1.5引入的技术 二,注解的定义注解的定义,类似于Java中接口的定义,只需要在interface前面加上一个"@"。代码如下:public @interface Clazz_Annotation { }上面...

2018-08-02 00:21:11

Android属性动画之实践篇

一,写在前面    Android动画分为View动画,帧动画,属性动画。   View动画包含四种动画:ScaleAnimation,TranslateAnimation,AlphaAnimation,RotateAnimation,分别对应缩放,平移,透明度,旋转。View动画有个特点:需要作用在具体的控件View上,可以采用xml文件,Java代码两种实现控件的动画效果。   ...

2018-05-31 00:27:36

Android 图片的三级缓存最佳实践与解析

一,写在前面       本篇文章将从图片的缓存,图片的高效加载,异步加载图片三个点,来讲述关于缓存图片的一系列技术点。关于异步加载图片涉及使用线程池加载异步任务,对这块知识不了解可以参考文章关于Android中常用的四种线程池的介绍  Android 源码解析AsyncTask的工作原理 。           缓存,在Android中经常会用到缓存技术,图片缓存仅仅只是缓存的一

2017-12-28 22:42:22

IntentService与HandlerThread源码解析

一,写在前面       IntentService使用场景:需要在服务中执行耗时的任务,使用IntentService代替在Service中开启子线程。       HandlerThread:封装了Thread+Looper,但并没有封装Handler。它是一个线程,run方法中初始化了Looper对象,并开启消息循环。       IntentService:封装了Handler

2017-12-18 23:34:09

Android 源码解析AsyncTask的工作原理

一,写在前面       1.1,AsyncTask的使用场景:开线程执行耗时的任务,并需要在主线程操作UI。值得一提的是,AsyncTask并不适用于做特别耗时的操作,特别耗时的操作可以用线程池+Handler来处理。            1.2,本篇文章着重讲述AsyncTask的原理,不再介绍具体如何使用AsyncTask。在使用AsyncTask时会介绍它的几个方法,这里先直

2017-12-15 21:24:01

关于Android中常用的四种线程池的介绍

一,写在前面       线程池的好处:可以在设定固定数量的线程池,并重用线程池中的线程,避免了线程不断的创建和销毁带来的性能开销。另外,还可以定时以及间隔循环执行任务。             Android线程池有哪些:FixedThreadPool,SingleThreadPool,CacheThreadPool,ScheduledThreadPool。事实上,前面列出的四种线程

2017-12-13 23:35:10

Android中Looper,MessageQueue,ThreadLocal源码解析

一,写在前面       之前写过一篇关于Handler机制的文章,写得还算比较全面,本篇文章侧重以Looper,MessageQueue,ThreadLocal三者间的关系进行分析。建议在阅读本篇文章前,先阅读文章 全面解析Android之Handler机制 。针对ThreadLocal的原理分析,可参考文章Android中ThreadLocal的工作原理 。       Han

2017-12-08 01:01:22

Android中ThreadLocal的工作原理

一,写在前面       Android中ThreadLocal有一个典型应用场景,存取主线程线程中的Looper对象,例如:在主线程中调用Loopublic class MainActivity extends Activity { private ThreadLocal mThreadLocal; @Override protected void onCreate(Bundle s

2017-12-05 22:48:43

Android ContentProvider启动流程源码解析(8.0)

一,写在前面       在文章Android 如何自定义一个ContentProvider 中,介绍了如何使用以及自定义一个ContentProvider,本篇不再介绍如何使用ContentProvider访问其他应用的数据。在阅读本篇文章前,建议先了解Activity的启动流程,可参考文章 Android Activity的启动流程源码解析(8.0) ,将不再对重复的代码细节进行分析。

2017-12-02 00:19:55

Android BroadcastReceiver的工作流程源码分析(8.0)

一,写在前面       本篇文章会从源码角度分析广播的工作流程,具体来说是分为两部分:广播的注册,发送广播。在阅读本篇文章前,建议先了解Activity,Service相关的工作流程。本篇文章将不再分析工作流程中的重复细节,参考文章:Android Activity的启动流程源码解析(8.0) Android Service的启动流程源码分析(8.0)Android Serv

2017-11-28 07:22:02

Android Service的绑定流程源码分析(8.0)

一,写在前面       为了更好的理解Service的绑定流程,建议先了解Activity和Service的启动流程,本篇文章将不再对一些重复的细节进行阐述。建议阅读前,可以参考如下两篇文章:Android Activity的启动流程源码解析(8.0)    Android Service的启动流程源码分析(8.0) 二,绑定服务的开始       在Activity中调用bin

2017-11-23 00:34:04

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!