自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(80)
  • 资源 (8)
  • 收藏
  • 关注

原创 Android之你需要了解的代码混淆

基本概念Java代码是非常容易反编译的,为了很好的保护Java源代码,我们往往会对编译好的class文件进行混淆处理。ProGuard是一个混淆代码的开源项目,它主要作用是混淆代码,当然它还具有对字节码进行缩减体积、优化等。android { ... buildTypes { release { // 开启混淆 minifyEnabled true proguardFiles getDefa

2020-11-28 16:51:11 178

原创 setContentView 源码分析

如上为代码调用时序图, 下面我们以UI布局的形式直观感受最终的布局效果:

2020-08-22 11:32:20 167

原创 Activity启动流程

2020-08-22 10:41:45 160

原创 synchronized 用法详解

1、简介在Java中,提供了一个关键字 synchronized 来保证多线程安全问题,synchronized可以修饰一个方法、代码块,能够保证在同一时刻最多只有一个线程执行该段代码。本篇文章将全面讲解synchronized 各种情景下的使用及产生的作用。2、synchronized 修饰某一非静态方法我们先看一下示例:private class MyObject1{ public synchronized void method1(String name){

2020-06-13 11:49:28 218

原创 Java容器框架(四)--HashMap实现原理

1、简介本篇文章主要介绍HashMap的实现原理,HashMap可以说是map家族中最重要的类,也是我们平常使用过程中最常见的类。下面我们来看看HashMap的整个类结构:public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Seri...

2020-03-28 12:21:26 217

原创 Android性能优化之工具介绍

1、概述在Android应用开发过程中,该如何发现性能问题呢?除了用户在使用APP的过程中发现卡顿,有什么方法可以监控卡顿吗?本篇文章主要介绍一些Android为我们已经提供的工具,如何去使用这些工具,通过这些工具帮助我们分析卡顿原因,最终解决卡顿等问题。2、工具介绍Android为我们提供了很多非常优秀的工具来帮我们检查应用性能问题,例如查看layout层次的Hierarchy Vi...

2019-11-10 12:01:03 298

原创 Android性能优化之系统显示原理

1、概述本篇文章不会从源码的角度去分析Android系统显示的实现细节,而是从理论的角度去讲解,参考的资料是一些博客和书籍,如有错误的地方,欢迎指正。写博客的目的是加深自己的理解,同时也是将自己的所学分享给大家,共同进步,只有我们首先知道了大致的原理,然后参考具体代码实现,相信更加容易看懂代码。2、显示原理2.1显示原理概述Android 的显示过程可以简单概括为:应用程序把经过...

2019-11-09 17:43:20 187

原创 Android属性动画 - 平移动画

1、简介在上一篇中,详细讲解了Android补间动画 - 缩放动画的具体实现,补间动画的其他动画实现方式很类似,能够将一个掌握透彻,其他也就迎刃而解,本篇文章主要讲解属性动画-平移动画的具体实现,同时也会概况属性动画的其他几种类型,相信看完本篇文章会对属性动画有一个全面的认识。话不多说,我们仍然以一个实例来讲解,具体效果图如下:2、具体实现对于属性动画的实现,我们可以不用在xm...

2019-09-22 12:37:52 11922

原创 Android补间动画 - 缩放动画

1、简介在上一篇,简要的介绍了Android动画分类及基本区别,本篇文章将会详细接收Android补间动画中的缩放动画各种使用方法,方便自己及广大开发人员在需要时快速查看。话不多说,我们先以一个GIF图来展示具体效果。2、具体实现如果我们要实现如上图的效果,通过补间动画的方式该如何实现呢?2.1 实现缩放动画xml文件我们在res下创建anim文件夹,然后创建一个动画文...

2019-09-21 16:38:58 915

原创 学习AIDL入门-传递自定义类的对象

目录1、简介2、Service 端2.1 创建StudentInfo.aidl 及 StudentInfo.java2.2IMyAidlInterface.aidl 文件中添加对应的接口2.3 在对应的Service 服务类中实现对应的接口3、client端3.1创建StudentInfo.aidl 及 StudentInfo.java3.2IMyAidlI...

2019-08-04 11:41:47 917

原创 Android Build 相关全面总结

1、build.gradle里面的几个版本说明compileSdkVersioncompileSdkVersion表示当前项目的编译版本,即你想让AndroidStudio以什么SDK版本去编译你的项目,因此在你编写代码调用系统提供的相关api时, 都是基于该版本的api的。例如 compileSdkVersion 25,当你查看系统api源码时,查看的就是 api level为25的系统源...

2019-07-14 18:10:01 333

原创 实现一个悬浮可拖拽的Button

1、简介最近,因为项目需要,需要制作一个界面上可拖拽的按钮,网上也有多实例,看了下大部分都是示例不全或讲解不清晰,效果图也不明显,借此自己记录一番自己的实现方案,以备不时之需,同时也为广大学者可以直接通过拷贝方式完成项目所需。2、效果图在开始代码之前,首先看看效果图,如下:3、核心代码实现3.1DraggingButton 实现public class Draggi...

2019-06-02 20:14:23 2663 4

原创 学习AIDL入门-一个简单的小demo

目录1、简介2、AIDL实战2.1创建一个Project2.2 创建服务端2.3 创建一个客户端应用2.4 测试3、其他思考3.1 如果有多个client 绑定同一个Service,那么是一个client对应一个service还是多个client对应同一个service?3.2 Service的生命周期是怎样的?3.3 client最好都是异步来调用aid...

2019-01-21 21:33:19 662 1

原创 Git命令全面总结

 目录1、Git 查看和配置信息命令1.1 配置用户名、邮箱1.2 如果需要再次编辑这两个名称,可以如下命令1.3 查看配置文件的内容1.4 如何查看某个命令的帮助?2、git status-add-commit 基本流程3、详解add&amp;commit&amp;reset3.1 git add3.2  git commit3.3 git reset...

2019-01-18 20:48:28 205

原创 Android之maven 仓库,maven Central,JCenter及Nexus 私服之间关系

简介在Android开发中,尤其是使用Android Studio开发过程中,我们可以看到在module中的build.gradle文件中compile许多其他开源库,这些开源库其实都是从maven仓库中下载下来的。本篇文章主要弄清楚maven仓库相关的一些概念。maven仓库何为maven仓库?所谓maven仓库,其实简单来说就是存放一些代码的地方,当我们自己编写的代码需要调...

2018-12-02 15:22:12 2122

原创 AndroidAutoSize开源库屏幕适配分析

目录1、AndroidAutoSize实战1.1 AndroidAutoSize简介1.2 代码实现1.2.1 依赖1.2.2 manifest配置1.2.3 Activity支持1.2.4 Fragment支持1.3 不同分辨率屏幕效果对比2、AndroidAutoSize原理分析2.1 基本概念2.1.1 一些重要的单位2.1.2 单位转换中涉及...

2018-11-01 14:33:02 7939 1

原创 OkHttp源码分析(二)之拦截器链及拦截器概述

1、概述本篇文章内容主要从拦截器链的角度对OkHttp相关拦截器的实现进行源码分析,主要内容包括如下:2、拦截器链分析2.1 简介 拦截器是 OkHttp 提供的对 Http 请求和响应进行统一处理的强大机制,它可以实现网络监听、请求以及响应重写、请求失败重试等功能; 拦截器链它是一种典型的责任链模式的实现。 2.2 拦截器类关系OkHttp默认情况下为我们...

2018-10-28 16:27:26 453

原创 Java容器学习概览

无论是Java开发或Android开发,都少不了对Java容器的使用,对Java容器有一个深入的理解能够让我们编写出高效的代码,于是趁闲暇之际,从源码角度分析Java部分容器的具体实现细节。Java容器框架(一)--概述篇Java容器框架(二)--ArrayList实现原理Java容器框架(三)--LinkedList实现原理 未完待续、、、...

2018-10-24 16:52:48 180

原创 OkHttp源码分析(一)之基础使用

一、简介OKHttp是一个处理网络请求的开源项目,是Android 当前最火热网络框架,由 Square 公司负责开发和维护,我们经常使用的另外一个开源网络请求库Retrofit,它其实就是基于OKHttp来实现,对OKHttp进行再次封装。git源码地址:https://github.com/square/okhttp二、简单使用OKHttp发起网络请求,具有同步和异步两种请...

2018-10-24 16:18:27 126

原创 Java容器框架(三)--LinkedList实现原理

1. 简介如果对Java容器家族成员不太熟悉,可以先阅读Java容器框架(一)--概述篇这篇文章,LinkedList类在List家族中具有重要的位置,基本上可以和ArrayList平起平坐,在功能上甚至比ArrayList还要强大。下面我们先来看看LinkedList继承关系:public abstract class AbstractSequentialList&lt;E&gt; e...

2018-09-28 16:14:13 193

原创 Android 系统最近几个版本的更新,你了解吗?

1. 简介软件开发这个行业基本可以认定是技术变化最快的行业,作为软件开发者为了不被淘汰,需要时刻关注新技术的变化,可以不去实践新技术但是需要对新技术有一定的宏观认识。Android系统每年都会有版本更新,作为Android开发者,怎能不了解更新的新特性、新技术,本篇文章即对Android最近几个新版本的新特性做一个总结,方便自己的查询。2. Android 9.02018年8月7日-凌...

2018-09-26 20:52:55 6931

原创 Java容器框架(二)--ArrayList实现原理

1. 简介在Java容器框架(一)--概述篇 中,对ArrayList做了一些简单的介绍,它在List家族中具有很重要的角色,它的类继承关系如下:public class ArrayList&lt;E&gt; extends AbstractList&lt;E&gt;implements List&lt;E&gt;, RandomAccess, Cloneable, java.io....

2018-09-20 20:59:26 194

原创 Java容器框架(一)--概述篇

1. 概述在Java开发中,我们经常使用到一些容器类例如ArrayList、HashMap等,很少去了解其他一些容器类或者说对Java容器有一个整体的了解。于是趁此闲暇之际,对Java容器进行一个整体的描述,一方面是为了对Java容器能有一个整体的思维,另一方面也是为了在平常工作中能够通过不同的场景对容器类的使用做到游刃有余。我们知道Java容器类基本上都是在java.util包下,有一个...

2018-09-18 21:58:46 2009

原创 学习完注解,再来探索下ButterKnife的实现原理

1. 简介分析完Java中的反射(有关Java反射的使用看这一篇就够了)和注解(Java注解全面总结),如果就这样结束了,总感觉缺少了些什么,不拿一个开源库来分析分析,然后动手实践一遍,怎么能体会到反射和注解的博大精深呢。于是想到了Android中的一个开源库ButterKnife,用法简单,为我们减少了大量垃圾代码(例如findViewById)。本篇文章首先从ButterKnife的基本用...

2018-09-13 21:57:50 268

原创 Java注解全面总结-看这一篇就够了

1. 简介注解在Java开发中扮演很重要的角色,特别在一些框架或开源库中可以看到大量注解的运用,如果对注解不够熟悉,那么阅读这些框架或开源库的代码也是十分艰难的。本篇文章将从基本概念、常用注解及自定义注解三个方面来对注解进行一次全面总结,其实也是自己在深入学习注解过程中的一些心得,希望对想了解Java注解的学者有所帮助。2. 基本概念2.1 什么是注解官方给予的解释是:A...

2018-09-11 21:12:12 513

原创 Java虚拟机全面解析

网上有关Java虚拟机相关的博客非常多,对于Java虚拟机的理解一直是我的薄弱块,最近工作之余利用闲暇时间来深入学习一下有关Java虚拟机相关的知识点,弥补自己的缺陷,主要阅读的书籍是《深入理解Java虚拟机:JVM高级特性与最佳实践》,同时分享出以下几篇文章,文章内容基本上来自本书,写文章的目的一方面是为了加深对知识点的理解,另一方面是来增强自己的总结和表达能力,共勉。Java虚拟机--之-...

2018-09-09 17:41:25 160

原创 有关Java反射的使用看这一篇就够了

1. 简介本篇文章不探讨反射的实现机制或者说实现原理,仅仅从使用的角度去讲解我们常用的一些API接口,方便自己以后需要使用时信手拈来,同时也方便广大博友能够快速了解API的使用。什么是反射?反射是java语言的一个特性,它允许一个java的类获取他所有的成员变量和方法并且显示出来,这样说起来有些抽象,例如我们可以通过反射去实例化一个对象,并不非得使用new这个关键字来实例化,同时我们...

2018-09-07 16:58:24 832 1

原创 Java虚拟机--之--类加载机制篇

1. 简介我们都知道,我们编写的Java代码,由编译器编译成.class文件后,读取到虚拟机后由类加载器对class文件进行加载。类加载器属于虚拟机的一部分,那么类加载器它是如何加载一个class文件的、如何解析以及又如何分配内存的呢?等等。本篇文章从class文件结构出发,分析类加载过程,最后讲解Java中使用到的类加载器,将对这些疑问进行一一解答。大致内容如下:2. class 类...

2018-09-05 21:47:11 206

原创 Java虚拟机--之--垃圾回收机制篇

1. 概述学习Java到一定阶段,对于Java虚拟机的学习是不可缺少的部分,了解C/C++的开发者都知道,内存由开发者主动申请,同时对象不用了还需要手动去释放内存,否则很容易造成内存泄漏。然而Java开发者则无需这方面的关注,只有少数部分例如文件流、数据库操作等需要做相应的关闭操作即可,内存的申请和释放都由Java虚拟机来为我们完成。上一篇文章Java虚拟机--之--内存模型篇 从虚拟机发展历...

2018-08-29 20:15:32 2291 2

原创 Java虚拟机--之--内存模型篇

1、前言最近闲暇之余拿些时间来看看《深入理解Java虚拟机》一书,这本书早有耳闻,一直没有细看。阅读之际将一些收获或感想记于此分享给大家,一来是弥补Java实现原理这方面的盲区,二来也可以加深自己的理解。本篇文章大致内容如下:2、Java虚拟机概述在讲Java虚拟机之前,我们来看看Java的技术体系,Sun官方定义的Java技术体系包括如下几部分:Java程序设计语言 各种平...

2018-08-22 21:27:52 2495

原创 Handler全面解析

一、简介有一定Android开发经验的从业者,相信大家都了解Android应用程序是通过消息来驱动的,系统为每一个应用程序维护一个消息队例,应用程序的主线程不断地从这个消息队例中获取消息(Looper),然后对这些消息进行处理(Handler)。本篇文章的目的就是要全方位的了解Android的消息处理机制,首先从最基本的使用出发,层层递进,带着思考,从源码层面上弄明白Handler的实现原理。...

2018-08-19 18:29:14 887

原创 Android 之 View/ViewGroup事件相关全面总结

一、简介在android中,重要性方面除了四大组件基本上就是View了,View甚至比Receiver和Provider更重要。在开发过程中,我们经常遇到需要自定义View来实现特殊功能、View之间的事件冲突(尤其是滑动冲突)等,要解决这些问题,我们都必须要对View/ViewGroup的事件有足够充分的理解。本篇文字大致内容如下图所示:二、View基础View是Android中...

2018-08-12 18:25:18 234

原创 Android性能优化之全面总结

简介由于Android技术的成熟,开发出一款Android APP已成为一件非常容易的事情,然而如何开发一款高质量、高性能、用户体验良好的APP却并不是简单的事。无论是我们找工作过程的面试中或是日常开发中,我们都会遇到APP性能优化的问题。如何提升APP性能成为更加关注的话题,因此APP的性能优化变得越来越重要。本文将从以下五个方面浅谈Android的性能优化。1. 布局优化...

2018-08-11 17:44:44 380 2

原创 全面认识Android中Gradle相关配置文件

一、简介自从使用Android Studio(简称AS) 开发Android应用程序,Gradle就突然出现在我们面前,AS就是使用Gradle来构建编译Android应用程序的,因此有关Gradle的配置,作为开发人员应当有一定的了解。使用AS创建一个Android应用程序,我们可以看到在project下,有settings.gradle和build.gradle文件,在gradle/w...

2018-08-07 20:49:02 596

原创 Android Gradle插件 和 Gradle之间的点点滴滴

何为Gradle?何为Gradle插件?我们知道Android的构建系统是使用Gradle来构建应用的,Gradle是一种构建工具,它使用一种基于Groovy的特定领域语言来实现的。软件开发过程不仅仅是编写代码,还涉及到对项目的管理,例如添加项目依赖,打包,签名,发布等一系列操作,后面这些就是Gradle替我们做的事。Gradle通过编写一个名为build.gradle的脚本文件对项目进行...

2018-08-06 13:53:35 132

原创 Groovy基础

一、概述Gradle是一款优秀的构建系统工具,它是基于Groovy的DSL语言实现,Gradle在Android中具有很重要的位置,因此在学习Gradle之前,了解Groovy是必须的。Groovy是基于JVM虚拟机的一种动态语言,与Java非常类似,因此Java学习者入门Groovy基本没有任何障碍,并且Groovy完全兼容Java。1)Groovy之字符串1、在Java中,每条...

2018-07-24 20:36:37 241

原创 Android动画-全面归纳解析

简介Android中,动画整体来说可以分为三大类,分别为:帧动画(Frame Animation),补间动画(Tween Animation)和属性动画(Property Animation),下面内容将会对这三种动画做详细讲解。1)帧动画(Frame Animation)帧动画,它是通过顺序播放一系列的图像从而产生动画的效果,类似于gif图的效果。Android中给我们提供Anima...

2018-07-13 17:16:27 233

原创 Java中有关多线程并发的几个工具类之总结

概述在JDK的并发包(java.util.concurrent)中,为我们提供了几个非常重要的并发工具类,分别为CountDownLatch、CyclicBarrier、Semaphore和Exchanger,下面将一一对这几个类的功能及基本用法做详细讲解。1)CountDownLatchCountDownLatch,类似于计数器的方式,用于等待一个或多个线程执行完操作开始自身代码的执...

2018-07-12 20:27:19 6248

原创 关于JNI引入的一些问题

上一篇文章中,我们讲述了Java层native方法--&gt;jni层--&gt;native层代码编写及调用关系,基本上展现了NDK开发的所有步骤流程,但是在实际的开发中,还是有一定的区别,例如static { //名字必须和build.gradle中的moduleName一致 try { System.loadLibrary("MyF...

2018-06-26 22:51:45 211

原创 JNI入门-第一个实例

NDK简介官方文档介绍如下:The Android NDK is a toolset that lets you implement parts of your app in native code, using languages such as C and C++. For certain types of apps, this can help you reuse code libr...

2018-06-26 17:29:08 3702

Java并发编程的艺术(高清带目录)

书中采用循序渐进的讲解方式,从并发编程的底层实现机制入手,逐步介绍了在设计Java并发程序时各种重要的技术、设计模式与应用,同时辅以丰富的示例代码,使得开发人员能够更快地领悟Java并发编程的要领,围绕着Java平台的基础并发功能快速地构建大规模的并发应用程序

2019-03-17

深入解析Android虚拟机-钟世礼

本书循序渐进地讲解了Android虚拟机系统的基本知识,并剖析了其整个内存系统的进程和运作流程,并对虚拟机系统优化和异常处理的知识进行了详细讲解。本书几乎涵盖了Dalvik VM系统的所有主要内容,并且讲解方法通俗易懂,特别有利于读者学习并消化。

2018-10-18

算法图解-像小说一样有趣的算法入门

本书作者:Aditya Bhargava 该书示例丰富,图文并茂,以让人容易理解的方式阐释了算法,旨在帮助程序员在日常项目中更好地发挥算法的能量。

2018-09-19

App研发录.pdf(完整版)+源码

这本书花了我一周多一点的时间看完。昨天晚看完久久不能寐,一是惊叹这本书的干货太多,这本书不同于市面上其他的Android 教程,给你讲一堆API方法,Android 基础,作者从一个APP团队的负责人的角度高屋建瓴的讲解App框架设计,Bug收集汇总分析,团队建设,项目管理等等方面,而且都是非常适合APP的项目管理者的实在的经验。

2018-09-07

音视频开发进阶指南:基于Android与iOS平台的实践

“音视频开发进阶指南:基于Android与iOS平台的实践”摘录来自: 展晓凯.

2018-09-04

Android群英传

对具有一定Android开发基础的读者,以通俗易懂的语言介绍了Android开发的进阶技巧。讲解了Android体系与系统架构、Android开发工具新接触、Android控件架构与自定义控件详解、ListView使用技巧、Android Scroll分析、Android绘图机制与处理技巧、Android动画机制与使用技巧、Activity与Activity调用栈分析、Android系统信息与安全机制、Android性能优化、搭建云端服务器、Android 5.X新特性详解、Android实例提高。

2018-08-14

Android开发艺术探索

一本Android进阶类书籍,采用理论、源码和实践相结合的方式来阐述高水准的Android应用开发要点。侧重于Android知识的体系化和系统工作机制的分析,通过《Android开发艺术探索》的学习可以极大地提高开发者的Android技术水平,从而更加高效地成为高级开发者。

2018-08-14

深入理解Android 卷I

深入理解Android 卷I

2016-03-26

空空如也

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

TA关注的人

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