自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android插件化实现

1. 类加载流程1.1 类加载的过程加载 -> 验证 -> 准备 -> 解析 -> 初始化在类加载过程中,虚拟机主要完成以下三件事:通过一个全限定名来获取定义此类的二进制字节流、将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构在Java堆中生成一个代表这个类的Class对象,做为方法区域数据的访问入口2. 类加载器2.1 Android ClassLoader继承关系2.2 PathClassLoader与DexClassLoader区别在安卓8

2020-08-15 14:58:44 251

原创 ios开发基础--变量与常量

2.1 变量与常量2.1.1 变量、常量定义var str = "Hello world",var a = 1, var b = 2.9//或者var str : String = "Hello world"//常量let a : Int = 1002.2 基本数据类型2.2.1 整型Int2.2.2 浮点型Float, Double2.2.3 布尔型Boolean2.3 特殊的基本类型2.3.1 元组允许一些不相关的类型进行自由组合成为新的集合类型//创建元组类型va

2020-08-09 09:59:34 205

原创 OkHttp3使用及原理分析

1. 基本使用OkHttpClient.Builder clientBuilder = new OkHttpClient().Builder();clientBuilder.connectTimeout(60,TimeUnit.SECONDS)//链接超时 .readTimneout(15,TimeUnit.SECONDS)//读取超时 .writeTimeout(15,TimeUnit.SECONDS)//写入超时 .interceptors(intercep

2020-08-08 13:06:45 787

原创 跨进程通信AIDL使用

1.Messenger1.1 定义通过Messenger在不同进程中传递Message对象,在Message中放入需要传递的数据。底层实现是AIDL构造方法public Messenger (Handler target){ mTarget = target.getMessenger();}public Messenger (IBinder target) { mTarget = IMessenger.Stub.asInterface(target);}Messenger对

2020-07-23 10:22:55 164

原创 Activity的启动流程

1.前言​ Activity作为Android四大天王之一,可以说是第一个接触到的也是日常开发中最常用的组件。系统对Activity的启动,生命周期管理做了很好的封装,使得我们用起来觉得特别方便、简单。但是系统内部又是如何通过intent就能启动一个Activity、又是如何回调各个生命周期方法的。接下来就让我们系好安全带,深入源码去看看这丧心病狂的实现细节。2.Activity的启动流程2.1 ActivityThread —> ActivityManagerService​ 我们平时想要开

2020-06-09 16:07:01 212

原创 java线程同步机制

1.Sychronizedsychronized有三种使用方式修饰实例方法修饰类方法修饰代码块1.1修饰实例方法这种情况下加锁的对象是实例对象,也就是说同一个对象调用方法时才会产生互斥效果,看下例子public class Test { public static void main(String [] ar){ SychronizedMethods methods1 = new SychronizedMethods(); Sychron

2020-05-30 12:10:14 269

原创 理解ClassLoader加载机制

1.什么是ClassLoader我们知道java中的.java文件在运行前是需要编译成.class文件,然后由JVM加载这些class文件,而负责这个加载过程的就是ClassLoader1.1 类加载时机通常情况下,以下两种情况ClassLoader会主动加载class文件调用类构造器调用静态变量或者静态方法1.2 Java中的ClassLoader1.2.1 应用加载器 APPClassLoader​ 主要用于加载系统属性“java.class.path”配置下的类文件,我们自己写的代

2020-05-28 13:55:38 275

原创 View工作原理

View工作原理1. MeasureSpecMeasureSpec意为测量规格,是一个32位int值,高2位代表测量模式SpecMode,低30位代表该测量模式下的规格大小SpecSize。通过MeasureSpec.makeMeasureSpec()可以得到一个measureSpec;代码如下: public static int makeMeasureSpec(@IntRange(from = 0, to = (1 << MeasureSpec.MODE_SHIFT) - 1) int

2020-05-24 08:47:38 225

原创 Java线程池

我们知道,Java中线程的创建,销毁都需要额外的开销,此时使用线程池能够更好 的管理线程。阻塞队列开始介绍线程池之前,我们先来看下Java常见阻塞队列。ArrayBlockingQueue: 数组结构的有界阻塞队列 , FIFO原则对元素进行排序。LinkedBlockingQueue: 链表结构的有序阻塞队列 , FIFO原则对元素进行排序。内部维持一个数据缓冲队列。Priority...

2020-05-17 14:45:32 140

原创 读书笔记——Binder通信原理与机制

详细说说Binder通信原理与机制本专栏专注分享大型Bat面试知识,后续会持续更新,喜欢的话麻烦点击一个star先上一张Binder 的工作流程图。(如果不清晰,可以 复制图片链接到浏览器 或 保存到本地 查看,我经常都是这样看图的哈)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FkZiKY27-1583207461544)(img/2017042311...

2020-03-03 16:23:35 271

原创 注解使用--ButterKnife原理分析

#目录1. 什么是注解2. 分类3. 定义注解4. 定义注解处理器5. ButterKnife原理#1.什么是注解JDK 5增加了注解,是代码中的特殊标志,可在编译,类加载是,运行时被读取并进行相应操作。#2.分类2.1 标准注解@override : 对父类方法进行重写标志@Deprecated : 过时方法添加的标志@SuppressWarning : 选择性取消特定代...

2020-02-29 14:50:10 304

原创 算法基础:插入排序

基本思想将数组中所有元素依次与前面已经排好序的元素序列比较,如果改元素比前面的元素小,则交换。

2019-11-02 09:27:07 106

原创 Android开发之View事件分发机制

Android开发之ViewView相关内容学习总结目录View事件1.1. 位置坐标参数1.2. 触控事件1.3. 实现滑动方式1.4. 事件分发机制1.5. 处理滑动冲突View工作原理2.1. 绘制流程2.2. 实现自定义View1、View事件1.1、1.4、事件分发机制a. 分发流程: Activity – ViewGroup – Viewb. 源码分...

2019-07-14 18:18:13 152

原创 垃圾回收机制

1. 如何判断对象已死1.1、引用计数法 在对象中添加一个引用计数器,每有代码引用它,计数器便加1,引用失效则减1。引用计数法在实现上相对简单,判定效率高。但在Java虚拟机里没有使用引用计数器算法进行内存管理,因为它难以解决对象间循环引用的问题。public class Test{ public Object instance = null;}public static void...

2019-06-22 14:33:22 101

原创 JVM内存管理机制总结

目录概述运行时数据区域2.1.程序计数器2.2.Java虚拟机栈2.3.本地方法栈2.4.堆2.5.方法区2.6.运行时常量池对象创建过程1.概述众所周知,Java虚拟机会自动管理内存资源,在开发过程中不易出现内存泄漏或内存溢出问题。首先,我们先来了解一下什么是运行时数据区域,Java程序执行时,会先将.java源文件通过编译器编译为字节码文件 .class文件。然后由J...

2019-06-11 09:47:13 110

原创 Android属性

Android属性动画目录属性动画简介通过ViewPropertyAnimator设置属性动画通过ObjectAnimator设置动画AnimatorSet组合动画ObjectAnimator自定义动画1、属性动画简介安卓3.0开始引入属性动画,不同于之前只能改变显示,无法操作对象属性的补间动画,属性动画可以实现更加丰富的动画效果,并且能够操作对象属性。(例如,使用对一个but...

2018-11-11 22:02:01 188

原创 RecyclerView使用

RecyclerView使用记录下RecyclerView的用法:添加布局RecyclerView子项布局适配器RecyclerView Adapter*绑定添加布局直接添加 RecyclerView标签&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" ...

2018-09-09 11:26:39 232

原创 折叠标题栏与侧滑菜单综合使用

Material Design是由谷歌在2014年推出的一套全新的界面设计语言,包含了视觉、运动、互动效果等特性。接下来将从以下几个方面记录一下使用方法先上效果图: 1.滑动菜单 DrawerLayout、NavigationView使用2.FloatingActionButton与Snackbar使用3.CardView、RecyclerView4.下拉刷新Swip...

2018-07-31 10:39:33 385

原创 ListView使用方法

ListView使用方法总结- 直接使用ListView组件创建列表- 通过Activity继承ListActivity创建- 定制ListView界面直接使用ListView组件创建列表通过数组资源文件指定列表项先在XML布局文件中添加ListView标志,设置好相关属性;在values下创建数组资源文件arrays.xml,添加字符串数组intyp...

2018-07-28 13:59:02 10553

空空如也

空空如也

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

TA关注的人

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