Android性能优化 针对Android中的性能优化,主要有以下几个有效的优化方法: 布局优化、绘制优化、内存泄漏优化、响应速度优化、ListView/RecyclerView及Bitmap优化、线程优化、其他 布局优化 核心思想就是:减少布局文件的层级。 删除布局中无用的控件和层次,其次有选择的使用性能比较低的ViewGroup。可以使用RelativeLayout来减少嵌 2018-12-20 #Android
Android音频技术攻略-AudioTrack相关 导读 本文按“定位与参数 -> 生命周期 -> 写入机制 -> API 观测 -> 故障恢复”组织,适合作为 AudioTrack 实战手册。 如果只看落地,建议优先阅读 1.2、2.3、3.3、5.1~5.4。 一、AudioTrack 定位与创建参数1.1 AudioTrack 是什么(定位)1.1.1 基础定义 AudioTrack 是 Android 侧 PCM 2026-02-16 #音视频
IPC机制 IPC机制 IPC是Inter-Process Communication的缩写。含义为进程间通信或者跨进程通信,指代两个进程间进行数据交换的过程、 还需要理解进程以及线程的区别和联系 进程:一般指一个执行单元,在设备上一般代指应用程序。 线程:CPU调度的最小单元且线程是有限资源。 一个进程可以包含多个线程,即一个应用内部可以执行多个任务。在Android中就会区分为主线程(UI线程)和 2018-12-11 #Android
Flutter学习大纲 Flutter是Google全新推出的跨平台应用开发框架,主打跨平台、高保真、高性能,需要通过Dart语言进行开发App,编写完成后即可实现 一套代码运行多个平台,目前只是支持了Android及iOS平台,后续还会拓展到PC上。 整套学习大纲会按照由表及里,由简到难的过程进行深入的学习Flutter。 搭建开发环境 新建一个Flutter应用 Dart语言相关 基础部件 Widg 2019-04-01 #Flutter学习笔记
Glide源码解析要点 该源码解析是基于最新的Glide 4.8.0进行的 Glide基本流程分析Glide的基本使用代码 1Glide.with(context).load($img$).apply(RequestOptions().transform(MultiTransformation(CenterCrop(),CircleCrop())).placeholder(R.drawable.ic_defaul 2018-03-18 #源码解析
数据结构--HashMap实现原理及解析 HashMap定义HashMap是基于Map接口实现的一种键-值对<key,value>的存储结构。内部允许null值,同时非有序,非同步(线程不安全)。它存储和查找数据时,是根据key的hashcode计算出具体的存储位置。内部最多允许一条记录的key为null。 如果把几个常见Map一起看: HashMap:非线程安全,适合单线程或外部已经做好同步的场景 2018-05-09 #数据结构 #Java源码
JVM相关及其拓展(二) -- 虚拟机类加载机制 虚拟机类加载机制1.定义虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。 2.类的生命周期 类从被加载到虚拟机内存中开始,到卸载除内存为止,生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用 2018-04-12 #JVM
JVM相关及其拓展(七) — 线程安全与锁优化 线程安全与锁优化 首先需要并发的正确性,然后在此基础上实现高效。 线程安全 当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者调用方法进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象就是线程安全的。 线程安全的代码必须具备一个特征:代码本身封装了所有必要的正确保障性手段,令调用者无需关心多线程的问题,更无须自己采 2018-12-19 #JVM
JVM相关及其拓展(八) — 静态分派&动态分派 方法调用方法调用不同于方法执行,方法调用阶段唯一的任务就是确定被调用方法的版本(即调用哪一个方法)。 从字节码指令的角度看,Java中常见的方法调用指令有invokestatic、invokespecial、invokevirtual、invokeinterface(以及更偏动态语言支持的invokedynamic)。其中“解析”更偏向于在满足条件时把常量池里的符号引用提前确定下来;“分派”则更偏 2019-02-21 #JVM
JVM相关及其拓展(六) -- Java与线程 Java与线程线程的实现线程是比进程更轻量级的调度执行单位,线程的引入可以把一个进程的资源分配和执行调度分开,各个线程间既可以共享进程资源,又可以独立调度(线程是CPU调度的基本单位)。 实现线程主要有三种方式: 使用内核线程实现 直接由操作系统内核支持的线程。 由内核来完成切换,内核通过操纵调度器对线程进行调度,并负责将线程的任务映射到各个处理器上。 多线程内核:有能力处理多件事情,支持多线 2018-12-18 #JVM
JVM相关及其拓展(一)-- JVM内存区域 1. JVM内存区域 JVM在执行Java程序的过程中会把管理的内存分为若干个数据区域。 程序计数器(Program Counter Register):一块较小的内存空间,可看作为当前线程所执行的字节码的行号指示器。每条线程都需要一个独立的程序计数器,所以为线程私有区域。没有规定任何OutOfMemoryError情况的区域。线程执行Java方法,则记录正在执行的虚拟机字节码指令地址,若为Na 2018-04-10 #JVM