Handler机制源码解析 主要的内容包括Handler的机制以及四个组成部分和源码的分析 下面的代码分析都是基于Android8.0 - Oreo的源代码 2018-05-14 #Android #源码解析
Hprof文件解析 Hprof对应的就是内存快照。可以方便的凭借Hprof进行OOM分析以及异常治理。 OOM治理 内存快照保存的对象信息和依赖关系也是静态分析内存泄漏的关键。 Crash治理 保存的数据,也可用于分析异常问题。 Hprof文件格式Hprof文件格式有明确组织方式,Android在Java的基础上新增了部分Tag。 Java Hprof格式 -- 虚拟机类加载器 虚拟机类加载器定义:在类加载阶段中的“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类,实现这个动作的代码块称为“类加载器”。 例如:编写的是.java文件,代码运行后变成.class文件,类加载器就是加载.class文件。 不同的类加载器加载同一个类时,得到的两个类也是不相等的。 Java类加载器分类:1.系统提供 2018-04-16 #JVM
Java-BockingQueue阻塞队列  Queue接口Queue队列的特征是FIFO——先进先出。只有队尾可以进行插入操作,只有队头可以进行删除操作。 Java中的Queue继承了Collection接口,并额外实现了以下方法 12345678public interface Queue<E&g 2018-12-24 #Java
Java-AbstractQueuedSynchronizer简介 AQS简介AQS全称为AbstractQueuedSynchronizer,意为抽象队列同步器。 Abstract:抽象类,只实现主要逻辑,其他交由子类实现 Queued:FIFO队列存储数据 Synchronizer:同步 在Lock中,是非常重要的核心组件。AQS是用来构建锁和同步器的框架,使用AQS可以简单且高效构建同步器。我们常见的ReentrantLock、CountdownLat 2020-09-13 #Java
WebRTC-Mediasoup编译记录 下载相关文件 libmediasoupclient webrtc 参考文档compile_webrtc mediasoup doc 编译webrtc1234567891011121314151617181920//编译工具下载git clone https://chromium.googlesource.com/chromium/tools/depot_tools.gitexport PATh= 2020-09-24 #WebRTC
WebRTC音频处理模块相关 **WebRTC源码**基于提交版本4c2f9c9 WebRTC音频处理模块,负责在传输音频时对音频进行一定的处理,例如降噪、增益、回声消除,整体模块代码位于modules/audio_processing。 按照以下模块分别介绍,各模块的功能以及相关配置和源码解析 默认音频处理配置如下: 1234567891011121314AudioOptions options; options.ech 2020-08-14 #WebRTC
static关键字分析 一种表示静态属性的修饰符。用于为特定区域分配单一存储空间,不考虑要创建多少对象或者说根本就不创建任何对象,再就是想在没有创建对象的情况下也去调用方法。 static关键字作用 用来修饰类的成员 修饰成员变量——静态变量 修饰成员方法——静态方法 当类被加载时,会优先被加载 用来修饰代码块——静态代码块,先于类的构造方法之前执行且只会执行一次。用来对静态成员做初始化 静态修饰的成员被 2019-02-25 #Java
理解Window及WindowManager 1.基本概念Window:他是一个抽象类,具体的实现类为PhoneWindow,它对View进行管理。每个Window都会对应一个View和一个ViewRootImpl,Window通过ViewRootImpl与View建立联系。 WindowManager:是一个接口类,继承ViewManager,主要用于管理Window,具体实现类为WindowManagerImpl。实际使用中无法直接访 2019-01-10 #Android
自定义View实践 Android系统默认提供大量的View,但是会因为需求的改动导致原生View不能符合需求,就需要进行自定义控件去使用。 实现方式 继承特定View 拓展某种已有View的功能就可以在原有View的基础上增加新功能,而且这种实现方式就不需要自己去处理那些注意事项,例如wrap_content、pandding等属性。 继承View并重写onDraw() 当需要实现一些不规则的效果, 2019-01-02 #Android
设计模式--装饰模式 动态的给一个对象添加一些额外的职责。就增加功能来说,装饰模式比生成子类更加灵活。 装饰模式-组成Component抽象构件 component是一个接口或者抽象类,定义了我们最核心的对象,也就是最原始的对象。 1234public abstract class Component{ //抽象方法 public abstract void operate();} 2019-01-11 #设计模式
设计模式--责任链模式 使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链路传递,直到有对象处理请求为止。 责任链模式-定义Handler:抽象处理者 该角色对请求进行抽象,并定义一个方法来设定和返回对下一个处理者的引用。 12345678910111213public abstract class Handler{ private Handl 2019-01-11 #设计模式