- 博客(23)
- 收藏
- 关注
原创 深入理解Java并发编程之核心原理概念
转载请注明出处:https://blog.csdn.net/yulong0809/article/details/79728009前言Java的并发时一般都会synchronized、volatile和Lock来实现同步,或者使用Java提供的一些辅助类,例如atomic和concurrent包下AtomicXXXX,ConcurrentXXX等,但是我们是否想过为什么会有这些关键字和类呢?这些关...
2018-03-28 15:10:22
1898
2
原创 深入理解View知识系列四-View的测量规则以及三大方法流程
通过前面几篇的深入分析,相信大家对View的理解已经很深了,我们说了setContentView背后做了什么,说了View从xml加载到通过WindowManager添加View后的一系列操作,说了Android的事件由来,Canvas的由来等等,这一篇我们将来分析View绘制的三大方法,即measure、layout、draw的工作过程以及一些相关参数的产生规则深入理解View知识系
2018-02-07 10:54:43
812
1
原创 深入理解View知识系列三-Window机制、Canvas的由来、Android事件的由来
我们在第一篇和第二篇中都涉及到了Window、WindowManager、PhoneWindow,而他们到底是什么,在第二篇又出现了WindowManagerImpl、WindowManagerGlobal、WindowSession、WindowManagerService,这么一堆的东西又都是干什么?起到什么样的作用?每个Activitiy都会存在一个Window,那么整个应用又一共有多少个W
2018-02-07 10:52:37
1394
原创 深入理解View知识系列二- View底层工作原理以及View的绘制流程
一般我们都知道一个View到展示出来会经过onMeasure、onLayout、onDraw三个方法,但是在分析完了setContentView后发现这几个方法都还没有执行,这篇将会上一篇的基础上继续分析View的工作原理深入理解View知识系列一- setContentView和LayoutInflater源码原理分析深入理解View知识系列二- View底层工作原理以及Vi
2018-02-07 10:49:28
1106
原创 深入理解View知识系列一- setContentView和LayoutInflater源码原理分析
这个系列的来由来:在工作中经常有小伙伴问我,到底怎么自定义控件,什么时候重写这onMeasure啊,onMeasure中的两个参数怎么来的,View的三大流程是怎么回事,等等一系列的问题,后来我发现其实是因为他们对View的知识不是特别的了解,或者说知道但是都是零零碎碎的,没有系统的串下来,所以就有了这一系列的文章在组内每周进行分享,先将每周整理的文档发布出来希望可以帮助更多的朋友。 其实
2018-02-07 10:46:41
939
原创 高级MVP架构封装演变全过程
本文不会讲解什么是MVP,如果还不太了解MVP请自行查阅资料,本文重点是封装一个高级MVP架构,会详细的讲解如何一步步从无到有的封装成一个高级MVP架构过程。 众所周知普通的MVP模式存在内存泄露、代码冗余、界面意外关闭后在重建数据缓存等问题,本文最终封装的成果为一一解决这些问题,而且在使用过程中尽量做到使用简单而且可扩展,当然本文也只是提供了一种封装思路而已,如果不能满足你的需求还可以自行再进行
2017-11-24 10:59:26
8443
42
原创 唯一插件化Replugin源码及原理深度剖析--插件的安装、加载原理
在Replugin的初始化过程中,我将他们分成了比较重要3个模块,整体框架的初始化、hook系统ClassLoader、插件的加载,3个模块已经说了两个,在第一篇的最后是插件的加载,当时没有说,一个是因为篇幅的原因,另一个原因是想从插件的安装、加载、插件apk初始化、整体的流程梳理下来,这里虽然没有分析插件的卸载,但是当看完安装和加载的过程,就自然能明白卸载了。提示:请不要忽略代码注释,由于通畅上下
2017-11-02 19:08:06
6564
6
原创 唯一插件化Replugin源码及原理深度剖析--唯一Hook点原理
上一篇我们说了Replugin的整体框架的初始化,但是因为篇幅的缘故还有Hook系统的ClassLoader和插件的加载没有说,那么我们这一篇就来详解的来分析一下Hook这块,本章我们讲从Hook系统ClassLoader的思想和原理进行剖析,如果没有看过上一篇建议先看上一篇提示:请不要忽略代码注释,由于通畅上下逻辑思维,不太重要的部分跳转代码不会全部进去一行行的看,但是会将注释写出来,所以请
2017-11-02 18:10:31
7968
6
原创 唯一插件化Replugin源码及原理深度剖析--初始化之框架核心
提示:请不要忽略代码注释,由于通畅上下逻辑思维,不太重要的部分跳转代码不会全部进去一行行的看,但是会将注释写出来,所以请务必不要忽略注释,而且最好是 跟着文章一起看源码。一、Replugin的初始化会参照下面几个类的设置,这样设计可以让接入者更方便的定制Replugin功能,但是必要需要继承Replugin提供的类以保证不影响其核心逻辑,建议在自定制的时候也要阅读源码不要影响本身的核心功能,几个类
2017-11-02 15:51:45
7086
3
原创 唯一插件化RePlugin源码及原理深度剖析--工程职责及大纲
首先简单介绍一些Replugin,Replugin是360开源的Android插件化框架,它在2017年7月开源后,目前已经成为最火热的插件化框架之一,它的特点是唯一Hook,全工程只有一处Hook了系统类。这无形之中让插件化降低了门槛,以前需要实现插件化需要Hook很多系统类,如果你想Hook住系统类,那么首先你要了解系统类才行,而Replugin的唯一Hook点不但降低了插件化的门槛,而且对于
2017-11-02 11:08:00
6272
3
原创 ContentProvider启动过程and多进程调用全过程源码详解
之前有两篇文章分别说了应用的启动过程(Activity)插件化知识详细分解及原理 之应用的启动过程和Service的启动过程Service启动过程and新进程创建全过程源码分析这里涉及了多进程调用的关系,建议先看这两篇。今天来说一下ContentProvider的启动过程及都进程调用过程,至于ContentProvider如何使用就不说了。下面进入正题首先我们知道如果我们要操作ContentProv
2017-09-05 19:54:48
1179
2
原创 Service启动过程and新进程创建全过程源码分析
由于Android本身对于四大组件的封装,导致在开发当中根本不需要知道四大组件的底层原理及运行过程,但是如果作为一个高级者来说或者为了解决一些底层出现的问题,那么了解四大组件的运行原理和启动过程那么非常必要的。而且目前市面上的热修复,插件化技术越来越火,那么如果连四大组件的启动过程和运行原理都不知道的话,那么也就根本就不明白这些技术的实现原理的,总之好处还是大大的,那么就让我们来一起研究一下吧。在阅
2017-09-04 16:10:58
1013
1
原创 Android动态编译技术:Plugin Transform Javassist操作Class文件
*本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布动态编译技术在开源框架中的应用非常的广泛,现在市面上的插件化框架,热修复框架几乎都使用了动态编译技术,原理几乎都是在编译期间动态的在class文件中注入代码或者或修改。那就让我们来了解一下这高大上的技术吧。本章会以完成一个demo的形式来揭开动态编译的神秘面纱,将会分成三步 一、自定义Gradle插件 二
2017-08-31 19:50:41
14172
8
原创 Java虚拟机四:类加载机制
虚拟机把描述Class文件加载到内存,并对数据进行校检、转换解析、初始化,最终形成可以被虚拟机使用的Java类型,将这个过程称之为类的加载机制。 一、类的加载过程 类从被加载到内存开始,会经历加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)、和卸载(Unloadi
2017-08-24 10:03:11
746
原创 Java虚拟机三:Class类文件的结构
我们知道我们编写的Java代码最终会被编译成.class字节码文件,其实就是一组二进制码。是以8位字节为基础的,如果遇到了超过8字节以上的数据时,会按照高位在前的方式分割成若干个8位字节的方式存储。 Java虚拟机规范的规定,class文件格式采用了一种类似于C语言结构体的伪结构体来存储数据,这种伪结构中只有两种数据类型:无符号数和表。无符号数:属于基本的数据类型,以u1,u2,u4,u8来代表1
2017-08-23 15:59:26
655
原创 Java虚拟机二:垃圾回收机制
上一篇说了Java运行时的内存区域及对象的创建,本文将说垃圾回收器及内存分配,上一篇文章链接 [Java虚拟机一:Java运行时内存区域及对象的创建]本文将根据三个方面来描述垃圾回收机制:一、如何确定哪些是要回收的对象二、垃圾回收算法思想三、垃圾收集器
2017-08-21 18:23:13
771
2
原创 Java虚拟机一:Java运行时内存区域及对象的创建
一、Java运行时内存区域首先我们都知道Java的内存管理是由虚拟机管理的,但是如果我们不了解虚拟机的内存管理那么就会造成内存泄露进而导致内存溢出。而且如果不了解内存的分配情况,当我们真的出现了内存泄露或者溢出的时候,我们排查起来那将是异常艰难的,所以了解Java的内存分配是很必要的,对我们的程序的内存优化也是大有利益的。而且,很多人把虚拟机只分为堆内存和栈内存,这种说法是不对的,可是为什么又会有很
2017-08-12 01:32:11
1291
3
原创 Android插件化资源的使用及动态加载 附demo
上一篇我们已经完成了一个真正可运行的插件化demo,而且demo中也解决了插件中不可以使用资源的问题,但是由于篇幅的问题我们并没有对原理讲解,所以这一篇是对上一篇的一个收尾,如果没有看过上一篇建议先看Android插件化完美实现代码资源加载及原理讲解 附可运行demo.demo地址 : https://github.com/ljqloveyou123/LiujiaqiAndroid我们的宿主应用调用
2017-03-02 12:51:40
7315
11
原创 Android插件化完美实现代码资源加载及原理讲解 附可运行demo
*本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 。我们通过前4篇的分解,分别将插件化设计到的知识点全部梳理了一遍,如果没有看过的,建议先看前面4篇1. Binder机制2. 插件化知识详细分解及原理 之代理,hook,反射,3. 类加载及dex加载4. 应用启动过程及类加载过程5. Android插件化完美实现代码资源加载及原理讲解 附可运行demo
2017-03-01 18:02:15
26282
29
原创 插件化知识详细分解及原理 之应用的启动过程
这一篇我们说应用程序的启动过程。 在Android系统中,应用程序是由Launcher启动起来的,其实Launcher本身也是一个应用程序,其他的应用程序安装后会在Launcher的界面上出现一个向右的图标快捷方法,点击这个图标时Launcher就好对响应的应用程序启动起来。我们看一下Launcher的源码:路径是\packages\apps\Launcher2\src\com\android\l
2017-02-28 12:05:39
5952
8
原创 插件化知识详细分解及原理 之ClassLoader及dex加载过程
接着上篇我们这一篇说ClassLoader及dex加载过程。为了解决65535这个问题,Google提出了multidex方案,即一个apk文件可以包含多个dex文件。 不过值得注意的是,除了第一个dex文件以外,其他的dex文件都是以资源的形式被加载的, 换句话说就是在Application初始化前将dex文件注入到系统的ClassLoader中的。 根据Android虚拟机的类加载机制,同
2017-02-27 11:38:40
6315
7
原创 插件化知识详细分解及原理 之代理,hook,反射
上一篇我们说了Binder机制,通过aidl的demo和系统源码的对比进行了运行过程的分析,这一篇我们说代理模式及反射,之前说过了,只是为了梳理插件化需要了解的知识点,所以不会特别深的去讲解。代理模式:也叫做委托模式,分为静态代理和动态代理。代理模式也是平时比较常用的设计模式之一,代理模式有代码简洁,高扩展性的特性.主要目的就是为访问者提供一个代理,以达到限制某个对象的访问,也就是说想访问一个对象,
2017-02-24 15:14:48
9382
5
原创 插件化知识详细分解及原理 之Binder机制
最近一直在研究插件化的东西,我看了网上大多都是直接上来就开始讲解原理然后写个demo,这样对于很多没有入门的朋友不是很好的理解,下面我会通过自己的研究过程,一步一步循序渐进的将插件化需要的知识点都梳理一遍及讲解,其实学习插件化的好处并不全因为它是一门热门的技术,插件化涉及的知识点很多,可以让我们对android的理解及境界上都会有一个质的飞跃,在我将所有设计的知识点都大概讲一遍后会用一个demo来实
2017-02-24 15:13:59
10889
8
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人