
Android
文章平均质量分 94
孤独世界的深海流浪汉
如果思念有声,夜半震耳欲聋
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ASM字节码处理工具原理及实践(二)
上一篇讲了ASM的简介、导入,以及字节码文件结构,并给出了ASM通过ClassVisitor对class进行访问的基础实战。本篇将进入MethodVisitor,尝试对方法进行访问、生成、转换。方法的代码存储为字节码指令序列。在此之前,我们需要先复习JVM栈结构,才能更好地理解方法中字节码指令的逻辑。原创 2023-04-14 22:30:49 · 920 阅读 · 1 评论 -
ASM字节码处理工具原理及实践(一)
我们知道程序的分析。生成和转换是很有用的技术,可以用于很多场景。ASM作为一个Java字节码处理工具,它被设计用于处理已编译的Java类。ASM不是生成和转变已编译的Java类的唯一工具,但它是最新且最有效的工具之一。特点是体积小,速度快,开源。它的作用和JVM的动态性相辅相成,在许多场景下有很好的表现,例如相比于AOP的编译期织入,ASM的操作速度更快。原创 2023-04-13 23:47:57 · 1417 阅读 · 0 评论 -
Android 埋点实战(一) —— 装饰增强方式
静态代理明显优于动态代理,静态代理在编译器织入代码,或者修改代码,对运行时的程序不会带来太大的性能影响,而动态代理在程序运行阶段发生,可能需要反射,对程序性能有一定的影响。原创 2023-03-18 16:58:50 · 1131 阅读 · 0 评论 -
Android源码分析 - onSaveInstanceState、onRestoreInstanceState 状态保存与恢复
本文基于 Android8.0 源码。原创 2023-03-14 21:21:01 · 1150 阅读 · 1 评论 -
Excel2Table框架搭建 - Excel文件与数据库相互转换的工具
一款 Excel文件与数据库相互转换的工具,初期实现记录。原创 2023-03-12 22:24:11 · 739 阅读 · 0 评论 -
Android源码分析 - View的触摸事件分发
从Input系统发来触摸事件,到触摸事件的分发,中间涉及到 TouchTarget 树路径记录,简化后续 move、up 等事件的搜索时间原创 2023-03-11 12:17:14 · 670 阅读 · 0 评论 -
Android源码分析 - Parcel 与 Parcelable
Parcelable将Java对象序列化到内存中,其他进程可以通过内核访问到Parcelable序列化后的Java对象的数据,和Serializable不同的是,Parcelable不需要通过内核去进行IO、反射来反序列化,而是直接将序列化的数据写入到内存中。原创 2023-03-10 16:20:43 · 1130 阅读 · 0 评论 -
Retrofit中的反射耗时,罪魁祸首并不在动态代理,而在反射注解
简而言之,Retrofit的代理类的方法不是直接发起请求,而是通过解析方法上的注解和传入参数,生成一个可以用于请求的对象。Retrofit的这个ServiceMethod对象,它是一个请求的模板对象,下次再调用这个ServiceMethod代理的方法的时候,直接从缓存中(复用池中)复用这个ServiceMethod对象,减免每次都一样的解析注解的步骤。原创 2023-03-09 22:42:21 · 776 阅读 · 0 评论 -
Android特别的数据结构(二)ArrayMap源码解析
ArrayMap源码解析,分析其数据结构,及增删改查的实现。分析时间复杂度、与SparseArray、HashMap进行性能对比,包括时间复杂度对比、内存占用对比。原创 2023-03-08 16:06:19 · 1511 阅读 · 0 评论 -
Android特别的数据结构(一) SparseArray源码解析
SparseArray源码解析,分析其数据结构,及增删改查的实现。分析时间复杂度、与HashMap、TreeMap进行性能对比,包括时间复杂度对比、内存占用对比原创 2023-03-08 12:11:55 · 974 阅读 · 0 评论 -
Android源码分析 - InputManagerService与触摸事件
我们这里以触摸事件为例,梳理流程- 点击屏幕- InputManagerService的InputReader线程通过EventHub捕获输入事件- 经过处理后将消息发给InputDispatcher线程- InputDispatcher找到触摸的目标窗口,通过InputChannel的 socket将事件发送给客户端的主线程Looper- 主线程Looper通过socket的fd,找到对应的窗口,将事件交给这个window- 具体window下的View处理具体的事件。原创 2023-03-01 22:32:40 · 1291 阅读 · 0 评论 -
Android从屏幕刷新到View的绘制(三)之Handler异步消息与同步屏障
Android从屏幕刷新到View的绘制(三)之Handler异步消息与同步屏障原创 2023-02-27 13:46:13 · 744 阅读 · 0 评论 -
Android从屏幕刷新到View的绘制(二)之Choreographer、Vsync与屏幕刷新
Android从屏幕刷新到View的绘制(二)之Choreographer与Vsync与屏幕刷新原创 2023-02-26 18:47:19 · 1454 阅读 · 3 评论 -
Android从屏幕刷新到View的绘制(一)之 Window、WindowManager和WindowManagerService之间的关系
Android从屏幕刷新到View的绘制(一)之 Window、WindowManager。WindowManagerService之间的关系原创 2023-02-26 15:08:31 · 1474 阅读 · 0 评论 -
Android源码分析 —— Activity栈管理(基于Android8)
在Activity启动流程学习的基础上,拓展分析AMS对Activity栈管理的细节,根据activity的不同启动模式和启动标识符flag,来决定Activity的栈管理策略。原创 2023-02-24 23:26:19 · 11057 阅读 · 0 评论 -
Android源码分析 - 回顾Activity启动流程
从zygote跟踪到activity的onResume(),探究activity到底是怎么启动的。基于Android8.0。Android9.0大同小异,但Android10之后,activity的管理将转移到atms。原创 2023-02-23 21:24:54 · 617 阅读 · 0 评论 -
高效获知Activity的生命周期
使用 Instrumentation 对 Activity 生命周期进行监听。原创 2023-02-20 15:58:31 · 638 阅读 · 0 评论 -
FyListen 在 MVP 架构中的内存优化表现
分享一下个人开源框架:FyListen生命周期监听框架 内存优化表现分析的实验过程原创 2023-02-18 17:07:28 · 369 阅读 · 0 评论 -
Android框架源码分析-浅析OkHttp3
Android源码分析之 OkHttp3,分析了同步异步发起请求的方式,以及代码设计的可参考性,流程图描述了拦截器的责任链模式,明确了 chain 和 interceptor 各自的任务合作用,并分析了连接池管理、socket请求部分的源码,对 100-continue, 101-switching-protocal,204-205-no-content 等进行了介绍原创 2023-02-16 19:22:48 · 812 阅读 · 0 评论 -
FyListen2 —— 相比 FyListen 更全面的生命周期监听器,告别内存泄漏
FyListen2生命周期监听框架,观察者模式,解决内存泄漏,线程安全,与 RxJava 的实战实例,补充分享重名方法无法重载的解决办法(内部类)凡是有生命周期的对象,你都能使用 FyListen 进行监听原创 2023-02-12 18:39:52 · 227 阅读 · 0 评论 -
FyListen——生命周期监听器(设计原理之理解生命周期)
FyListen框架原理:Activity 与 Fragment 的生命周期,及其生命周期事件分发原理。Fragment 通过状态转移实现生命周期回调原创 2023-02-11 18:16:50 · 734 阅读 · 0 评论 -
FyListen——生命周期监听器,告别内存泄漏!(上:使用方法)
使用 FyListen 生命周期监听框架,优雅地处理内存泄漏。监听 Activity、Fragment,兼容 Android、Androidx。原创 2023-02-11 18:08:34 · 660 阅读 · 0 评论 -
Android框架源码分析——从设计模式角度看 Retrofit 核心源码
从设计模式角度进行Retrofit源码解析,了解外观模式、构造者模式、策略模式、动态代理的基本使用,回答了CallAdapter和Convert使用的时机、注解和参数的解析处理、和OkHttp相比的优势、接口如何匹配对应的CallAdapterFactory(通过返回值类型)、等问题原创 2023-02-09 19:30:26 · 860 阅读 · 0 评论 -
Android-全面理解Binder原理
一文打通你对Binder通信机制所有疑惑:- 如何理解Binder通信中的 binder实体、handle句柄?- Binder驱动如何维护binder实体和handle的映射?- Binder能够传递多大的数据?- Binder的“一次拷贝”是如何实现的?- client端如何接收到数据?- servicemanager的初始化和app、服务不同?- 进程隔离、IPC通信的介绍与思考。- 为什么选择 Binder?原创 2023-02-07 11:45:17 · 1997 阅读 · 0 评论 -
Android框架源码分析——从设计模式角度看 RxJava 核心源码
从设计模式角度看RxJava核心源码。分析其订阅流程、事件回调流程,发布者装饰流、订阅者装饰流、并分析线程切换原理、解决内存泄漏问题。原创 2023-02-01 00:08:57 · 483 阅读 · 0 评论 -
Android从开机到APP启动流程——基于Android9.0
Android Zygote启动流程,SystemServer启动流程,AMS启动流程,Launcher启动流程,APP启动流程原创 2023-01-17 23:09:09 · 2197 阅读 · 0 评论 -
Android消息机制与源码剖析(Looper,Message,MessageQueue以及Handler)
Android消息机制源码剖析,以及常见问题等的回答:为何主线程的Looper死循环,但UI并不会卡死。原创 2022-12-13 15:29:23 · 397 阅读 · 0 评论 -
OpenGL——EGL
OpenGL——EGL什么是EGLEGL 是 OpenGL ES 渲染 API 和本地窗口系统(native platform window system)之间的一个中间接口层,它主要由系统制造商实现。EGL提供如下机制:与设备的原生窗口系统通信查询绘图表面的可用类型和配置创建绘图表面在OpenGL ES 和其他图形渲染API之间同步渲染管理纹理贴图等渲染资源https://www.khronos.org/egl/与窗口系统通信因为每个窗口系统都有不同的语义,所以EGL提供基本的不原创 2020-11-13 01:51:42 · 1650 阅读 · 0 评论 -
OpenGL在Android中的应用
OpenGL文章目录OpenGLOpenGL 、OpenGL ES简介OpenGLOpenGL ESOpenGLES 3.0图形API汇总着色器与管线着色器程序Shader顶点着色器VertexShader片元着色器FragmentShader管线内置变量与内置函数内置变量内置函数总结渲染宿主渲染窗口宿主GLSurfaceView和TextureView的区别EGL什么是EGL自己写一个TextureEGLHelper来管理EGL和渲染线程关键代码创建管理线程启动线程并且通知EGL初始化环境初始化EGL环原创 2020-10-19 19:46:11 · 2236 阅读 · 0 评论 -
Android 删除文件总是返回false? 先看看你删的文件是否为文件夹
删除文件夹的正确姿势今天遇到一个坑File file = new File("...");boolean isDeleted = file.delete();//isDeleted is false当file为文件夹的时候,直接调用delete是无法删除的,我们应该先把子文件逐个删去,最后再删去该空目录网上找到的代码,亲测可用,工具类的几个方法贴在下方1. deleteFolder...原创 2020-04-28 21:37:33 · 1383 阅读 · 0 评论 -
Android AOP切面编程+动态权限申请
AOP+动态权限申请最近在利用AspectJ做埋点,突发奇想,能否也用类似方法做动态权限申请?发现可以。我来介绍一下我的思路。AOP是什么AOP,百度一下就知道,是 Aspect Oriented Programming,面向切面编程。怎么理解面向切面编程呢?我用一个场景来解释一下:我们在一个项目中会有很多模块或者函数(在图中统称为任务,下同)要使用,而在进行某些任务之前,或者之后,或者...原创 2020-04-27 22:27:59 · 678 阅读 · 0 评论 -
设计模式与实践:创建型模式(工厂模式)
创建型模式单例模式工厂模式建造者模式原型模式对象池模式工厂模式所谓工厂,我们可以理解为一个用来生产实例的工具,工厂负责生产一系列同一性质的产品。在调用的时候,我们把这个工厂看做一个黑盒,我们只要告诉它我们需要什么实例,他就会给我们创建对应的实例。1. 静态工厂模式我们写一个简单地工厂类来创建Vehicle实例。我们创建一个抽象Vehicle类和继承自它的三个具体类:Bike、...原创 2019-11-09 22:09:02 · 250 阅读 · 0 评论 -
设计模式与实践:创建型模式(单例模式)
创建型模式单例模式工行模式建造者模式原型模式对象池模式单例模式单例模式(Singleton pattern)是最常用的设计模式,它具有易于理解、使用简便等特点。有时候单例模式会过度使用或者在不合适的场景下使用,这样造成弊大于利的后果。单例模式,顾名思义,用来保证一个对象只能创建一个实例,此外,它还提供了对实例的全局访问方法。单例模式的实现很简单,只需要由单个类组成。为确保单...原创 2019-11-06 23:13:04 · 165 阅读 · 0 评论 -
音视频:基础知识点
音视频相关知识点1.帧率定义为每秒显示帧数(frames per second,fps),或者赫兹(Hz)。每秒显示帧数(fps)或帧率,表示图像处理器处理场时每秒能够更新的次数。高帧率可以得到更逼真更流畅的动画。一般来说30fps就是可以接受的,但是将性能提升到60fps则可以明显感受到逼真感。等过了75fps,提升就没那么明显了。帧率并不是越高越好,如果超过了屏幕的刷新率,则会浪费图像...原创 2019-11-05 00:27:53 · 410 阅读 · 0 评论 -
设计模式和原则
设计模式和原则写在前面最近在跟着《Java设计模式及实践》学习,此博客为笔记1. 单一职责原则(Single responsibility principle,SRP)单一职责原则可以被视为使得封装工作达到最佳状态的良好实践。目的:希望一个类只负责一个职责,修改的时候,不至于引起一系列的更改,从而导致破坏与其他更改原因相关的功能。书中提到的例子是使用数据库来持久保存对象,其中涉及增...原创 2019-11-01 09:54:10 · 210 阅读 · 0 评论 -
java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more
从错误看应该是系统时间错误Exception in thread "main" java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone. You must configure either the server or...原创 2019-02-04 09:47:55 · 240 阅读 · 0 评论 -
Android 触摸事件分发
事件分发总瞰由Activity的dispatchTouchEvent做分发consumed --> 消费, 表示事件就此消费,不会继续传递,事件终止。dispatchTouchEvent返回false:事件停止往子View传递和分发,同时往父控件方向回溯(下级处理不了,交给上级处理)onTouchEvent 返回false:不消费事件,让事件往父控件方向回溯onInterce...原创 2019-04-20 11:18:43 · 267 阅读 · 0 评论 -
Android 右滑返回实战
Android 右滑返回实战我们可以看到类似QQ移动端的聊天界面、QQ空间的右滑返回比较支持单手操作,给我们短时间快速切换页面浏览信息提供了很大帮助,比较适合需要简洁操作的社交软件。当然也不是所有软件都适合右滑返回,但是今天刚好遇到一些问题,也有一些相关点子,还没查关于QQ右滑返回是如何实现的,我就谈谈我的想法与实践。首先从MotionEvent入手想要获得用户触摸操作,或者获得用户的手势...原创 2019-08-03 19:52:19 · 782 阅读 · 0 评论 -
Android OpenCV 相机旋转90°问题解决(本文缺胳膊断腿,个人处理方法留存,慎点)
Android OpenCV接入后竖屏JavaCameraView旋转90°问题解决(本文缺胳膊断腿,个人处理方法留存,慎点)这篇博客只是留个临时的处理方法,如果大神们有其他方法来分享分享喔。首先,JavaCameraView进行人脸识别、人眼检测的时候,默认需要横屏,如果竖屏,并且直接在CvCameraViewListener2的onCameraFrame方法中直接旋转inputFrame,...原创 2019-08-03 20:13:53 · 1334 阅读 · 0 评论 -
Android View的绘制流程
文章目录1. 视图坐标系1.1 Android坐标系1.2 视图坐标系2. View的绘制流程前情提要2.1 View 树的绘图流程2.2 View绘制流程函数调用链2.3 绘制顺序2.4 measure过程传递尺寸的两个类2.4.1 ViewGroup.LayoutParams2.4.2 MeasureSpecs [...speks]3. View的绘制流程3.1 View的measure流程...原创 2018-12-16 12:59:16 · 1656 阅读 · 0 评论