自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 个人博客总览

java-内部类

2020-04-25 14:05:02 1575

原创 java 动态代理

java 动态代理前言需求说明实现前言前两天看了一个插件化的相关视频,在其中用到了很多反射和动态代理的相关知识,之前也学习过相关的知识但是没有理解。然后一直觉得反射和动态代理没啥用,但学习了插件化后觉得这个两个技术还真是厉害。首先如果有基础基础知识欠缺的先看看相关文章反射的使用动态代理需求说明在android插件化hook的过程中,当要直接启动一个插件Activity的时候是不行的,插件Activity是要宿主App中进行注册。那么为了能启动插件Activity,首先需要在宿主APP中添加Ac

2020-07-11 22:25:25 189

原创 图片压缩的两种方法

图片处理,两种质量压缩,分辨率压缩对比,android中对于图片的处理非常的常见,总体上希望图片能占用内存小,View上显示刚刚好,并且上传服务器大小符合要求且图片不模糊。要达到这些要求我们得知道一些知识

2020-05-13 00:55:38 2719

原创 Gradle-使用脚本修改包名(package)

使用脚本修改包名前言前言之前我写过一篇博客,介绍使用同一套代码打多个APP,既然是多个app,那么每一个App的applicationId不一样,App的名字也不一样,图标也可以不一样。但在上次的介绍中,我们看到,其实有一个东西是没有改变的,那就是包名,包名不是指manifest中的package,而是指com.xxx.xxx,这个是没有改变的,如果我们项目需要在修改applicationId...

2020-04-23 22:13:14 3440

原创 Gradle-初识Gradle

初识Gradle前言android中的Gradle前言Gradle是一款开源的自动构建工具,它的SDL是基于Groovy语言实现,就类似我们的android的Api,java的语法。所以我们学习gradle主要学习两点1、Groovy语法 2、Gradle为我们提供的Api。学习新的知识还是从我们经常看到熟悉的地方开始学习,容易接受,那么以android的gradle构建开始看起。andr...

2020-04-23 22:01:17 296

原创 view-源码角度理解Android事件分发

对于Android的事件分发,很早之前是看的图解 Android 事件分发机制,其中的事件分发的U型图很好的解释了分发的过程。理解起来就类似领导给下属分发任务,任务从上到下分发,下属能完成就处理掉任务,不能处理然后返回给领导,让领导处理。

2019-07-27 15:06:04 194

原创 View-view的measure过程

上一篇我们梳理了DecorView加载流程,其中涉及到measure、layout、draw方法,这一篇详细介绍view的measure过程。measure的过程主要用于测量一个View的大小,在层级嵌套的View中,View大小首先取决于父`View的设置大小的方式`,然后与`自身的需要大小`也有关。在这样的场景中Android将View的测量模式和模式下的大小封装成一个`MeasureSpec`对象 ,然后结合自身`LayoutParams`去设置一个View的大小

2019-07-27 15:04:31 241

原创 View-setContentView源码解析

我们经常编写的xml文件用于界面显示,但在我们设置了setContentView()后,你是否知道View是这么被解析,然后被绘制显示出来。这篇文章主要从setContentView切入,去查看DecorView加载、以及measure,layout等操作,如何分发到子View。相关源码来自`android Api 28`

2019-07-27 15:02:33 167

原创 view-Canvas

Canvas

2019-07-27 15:00:47 669

原创 view-View基础重认识

View基础重认识前言View的构造方法View的位置参数View的相关方法View与Activity的生命周期进入Activity点击Home键回到桌面重新进入App退出Activity前言android中的View形形色色,我们刚开始接触Android的时候就开始于它打交道了,但View以及与View相关的周边的知识点也是非常的繁多,并且从初级到高级我们都有很多可以学习的地方。我所知道的讲...

2019-07-27 14:59:17 469

原创 android-HandlerThread、IntentServer

我们知道Handler可以进行线程间切换,如果在子线程实现looper的创建与循环,那么就实现了子线程异步操作的消息处理机制,这也就是android 为我们提供的HandlerThread

2019-06-25 20:57:41 367

原创 android-更新UI的几种方式

在android中,为了避免在子线程中更新UI造成多线程安全问题(View中更新UI的方法大多不是同步方法),就将UI的更新切换到主线程更新,使用的就是android的Handler机制。在android中可以直接使用Handler进行更新UI,也可以使用Handler的实现进行更新UI,接下来我们盘点下android中更新UI的几种方法,也算是对Handler学习的使用

2019-06-25 20:50:37 1153

原创 android-重新理解Handler

Android中UI绘制方法大多是非线程按安全的,为了避免多线程下更新UI,造成UI绘制或显示异常,android为我们提供了Handler机制。Handler可以将子线程中的UI操作切换到主线程中执行,保证UI安全。在使用的过程中我们只关注Handler,但Handler机制的实现还需要Looper、Message和MessageQueue的协助,有这四个类才能构成android消息机制

2019-06-12 23:24:56 267

原创 android-同一套代码打多个APP

在开发中我们可能遇到各种需求,有时候公司为了渠道的推广或者制作马甲包,一套代码要打出多个App来。对于多个App的定义,首先applicationId不一样,可能App的名字也不一样,图标不一样,可能一些配置文件如服务地址,友盟的key等都不一样,但又确实是一套代码。为了不分出多的项目,避免后期更新麻烦,那么就需要我们类似多渠道配置进行配置

2019-05-17 00:19:03 2793 4

原创 JUC锁-锁的分类

锁的分类悲观锁:在进入同步方法的时候都会获取当前同步锁对象,直到退出同步方法时才会释放同步锁对象。如果有线程A和线程B,同他们都会访问obj对象的同步方法。当线程A获取到obj对象的同步锁,在执行某些方法的时候,这时候线程B企图获取 obj对象的同步锁就会失败,这个时候必须等待,直到线程A释放掉 obj对象的同步锁,线程B才能执行obj的同步方法java中的悲观锁是synchronized,A...

2019-05-15 19:04:25 2371

原创 并发-Synchronized

Synchronized的理解

2019-05-15 19:03:02 288

原创 JUC锁-CAS

CAS前言

2019-05-15 19:01:07 141

原创 Java集合-LinkedList

Java集合-LinkedList

2019-04-29 23:59:34 172

原创 Java集合-HashSet

Java集合-HashSet

2019-04-29 23:58:58 132

原创 Java集合-ArrayList

Java集合-ArrayList

2019-04-29 23:58:31 247

原创 Java集合-HashMap

Java集合-HashMap前言哈希算法哈希表什么是哈希表哈希函数详细描述处理冲突查找及分析java中的MapHashMap上帝视角:HashMap使用HashMap的put方法:MashMap的hash方法和hash桶数组索引位置:HashMap的resize()方法HashMap的长度保持2的次幂好处:前言了解HashMap前,我们先了解几个概念哈希算法,是一类算法。哈希表(Hash...

2019-04-29 23:57:54 451

原创 Java集合-Collection

Java集合-Collection解析前言前言数组 栈 队列 链表 树 hash表 图

2019-04-29 23:57:26 194

原创 Retrofit-解耦

Retrofit-解耦前言前言上一篇过了遍Retrofit-源码分析,但是仅仅是

2019-04-13 19:01:44 403

原创 Retrofit-源码分析

Retrofit-源码分析前言如何发起一个请求Retrofit请求流程Retrofit源码分析OkHttpClient.BuildeRetrofit的创建ExecutorCallAdapterFactory类解析发起请求的Callretrofit.create(xxx.class)HttpServiceMethod参数的获取和真实Call的创建前言前一段时间有在看Retrofit,一个好的框架...

2019-04-13 18:52:38 248

原创 Retroft-简单封装

前言Retrofit的使用已近有一段时间了,并做了一些简单的封装,但仅仅会使用是远远不够的,为此希望做一个总结,1是对Retroft的封装和使用、2是Retroft涉及到的Java技术、3是Retrofit相关的源码分析。这一篇主要是记录Retrofit的封装使用。对于一个网络框架,在使用中我希望能做如下封装统一无网络提示、统一网络超时判断添加统一Heard头,添加统一请求参数设置数据...

2019-04-02 00:00:07 467

原创 Java注解学习

前言自java5.0引入注解后,极大的改善了对于元数据的描述方式。注解为我们提供了可以在代码中添加信息,使我们在稍后某个时刻非常方便的使用这些数据。在没有引入注解前,XML被广泛的用与描述元数据,但对于将元数据与代码分离的方式在某一些场合下维护变得越来越糟糕,他们希望使用一些和代码紧耦合的东西,而不是像XML那样和代码是松耦合的(在某些情况下甚至是完全分离的)代码描述,因此一种规范的耦合的描述...

2019-03-17 23:18:20 265

原创 java 反射使用

java 反射使用前言反射的定义理解虚拟机加载过程虚拟机加载过程主要分为几步:反射支持类使用核心类提供方法前言这里简单学习java反射的使用,后面会结合注解再一起在进行学习,后面几篇文章会集合retrofft一起讲解,主要是学习retrofft的思想以及使用到的Java技术,如有纰漏之处,万望指出。反射的定义反射的定义:在运行的状态中,对于一个实体类,都能知道这个类的所有属性和方法;对于任...

2019-03-14 23:57:51 254

原创 字节码Class文件解读

一、前言刚开始学习Java的时候老师告诉我们Java是跨平台语言,一次编译到处运行,那么在Java编译过程中做了什么事情,而虚拟机又是怎么初始化和创建对象的,这里对我知道的做一个记录和梳理,如有理解错误,欢迎评论指出!要将编写的Java源码要运行起来,首先要经过Java编译器编译。将原来的.java文件经过编译器编译转换成.class字节码文件。编译器的存在主要就是编译不同的源文件,将其转换成...

2019-02-28 23:57:36 479

原创 android-App启动过程

APP启动流程涉及的类和调用的方法还是蛮多的,做为android应用开发其实知道整个流程和重要的调用方法就够了。但是在了解整个流程前,得先知道涉及的相关知识,这样才能更好理解后面整个流程。后面源码分析基于Android-2.2_r1。

2018-09-24 00:17:04 10472 1

原创 android-Android系统启动

平常我们使用手机的是不是一直在点击一个个的App图标,然后由系统帮我们打开App去使用。看起来很简单,其实系统底层帮我们做了很多事情。现在我们从App应用开发的角度带着问题去了解底层的部分实现。android系统是怎么启动的怎么看到的系统桌面android系统是怎么启动的当Android手机通电启动后,会有一个类似计算机系统的引导程序BootLoader,用于初始化硬件设备,建内存空间...

2018-09-24 00:09:55 292

原创 android-跨进程通信-AIDL解析

Aidl是什么Aidl支持哪些数据类型Aidl的使用Aidl生成文件的讲解Aidl(Android接口定义语言)是Android提供的一种ICP通信机制。首先学习Aidl我们心中要有Clien端和Server端的概念,并且在Clien和Server通信过程中涉及到Binder的相关知识。Aidl支持的数据类型一共有4种Java的基本数据类型List和map: ...

2018-09-24 00:07:26 259

原创 android-Handler源码解析

首先提出问题handler与loop的关系,一个线程能否创建多个handlerloop一直循环为什么不会卡死handler的内存泄漏原因,继承handler不会发生内存泄漏查看Handler的api我们可以看到,Handler主要为我提供了两个大体的作用post相关方法,如post(Runnable) postAtTime(Runnable,long)等send相关方法,如sen...

2018-09-24 00:04:25 284

原创 Java内存区域和垃圾回收

Java运行时分区介绍对象创建过程判断对象死亡的引用计数算法和可达性算法垃圾收集算法介绍HotSpot中的垃圾回收器1、java虚拟机在运行的过程中,会将所管理的内存分为不同的几个区域,不同的区域有不同的创建时间和销毁时间,以及不同的区域会依赖线程的启动而建立和销毁,具体的内存分区就如下图:程序计数器:此内存空间是一个线程私有的内存空间,每个线程都相互独立。主要用于保存当前线程...

2018-09-23 23:45:15 392

原创 Http

Http介绍、Http头部信息Http2.0http与tcp、socket与tcp、socket与Httphttp3次握手和4次挥手基于Http的OkHttp缓存、以及基于Http的Android长连接机制Http:超文本传输协议,Http是基于TCP/IP通信的协议,默认端口号为80,特点:支持客户/服务模型、灵活无连接:在Http1.0的时候,每次连接只处理一次请求。服务端处...

2018-09-23 23:34:33 278

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

设计模式-适配器模式设计模式有很多种,其中将设计模式根据其目的可以分为三种,创建型、结构型、行为型。适配器模式属于机构型模式。结构性适配器,根据使用类与对象的不同,可以分为类结构模型和对象结构模型,也就是类适配器和对象适配器。适配器结构适配器模式主要包含几个角色Target(目标抽象类) 客户所期待的接口,目标可以是抽象类或接口 Adaptee(需要适配的类) 需要适配的类或适配者类 A

2018-01-03 21:41:08 202

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

设计模式—适配器模式

2017-12-19 22:16:44 156

空空如也

空空如也

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

TA关注的人

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