Android启动流程
关于项目
BeesAndroid项目旨在通过提供一系列的工具与方法,降低阅读Android系...
ASM字节码插桩
为什么进行全埋点?
以往手动形式埋点
以往的埋点方式都是人为进行定义名称和选...
Android ANR分析(trace文件的产生流程)
ANR信息获取(trace文件的产生流程)
首先收集需要dump trace的进程并给对应...
android 应用卡顿监控
如何确定应用发生了卡顿?
根据前面的文章我们知道Choreographer.doFrame()方法...
Android OpenGLES 3.0 开发系统性学习教程
基础篇
OpenGL ES 3.0 开发(01):绘制一个三角形
OpenGL ES 3.0 开...
Android 12+ 蓝牙外放问题总结
背景
Android 12 上发现存在蓝牙外放问题,原因是存在多个应用设置通话音量,...
Android设计模式源码解析之外观模式(Facade)
1. 模式介绍
模式的定义
外观模式(也成为门面模式)要求一个子系统的外部与...
Kotlin 中的 Lambda 与 Inline
在Kotlin中,有很多很酷很实用的特性,比如Lambda和高阶函数,利用这些特性,...
Kotlin中object和companion object 区别
概念:object声明(一个类)是延迟加载的,只有当第一次被访问时才会初始化,所以...
插件化
目前市面上有许多Android插件化方案。每种方案都有各自的实现思路。而且随着Googl...
Android FFmpeg 音视频开发极简教程
Android FFmpeg 音视频开发系列连载
FFmpeg 开发(01):FFmpeg 编译和...
进程间的同步
在看Replugin源码时,发现在对插件apk文件解析之前,对这个文件加了一个ProcessL...
Fresco缓存架构分析
本文是Fresco源码分析系列第二篇文章,主要来看一下Fresco中有关图片缓存的内容。
...
JNI 编程上手指南之异常处理
JNI 程序中的异常分为以下几种:
Native 程序原生异常,一般通过函数返回值和...
AndroidManifest使用PackageParser.parserPackage原理分析
本文实例讲述了Android APK应用安装之AndroidManifest使用PackageParser.parse...
Android中的进程Process
关于BeesAndroid项目
BeesAndroid项目提供了一系列的工具、理论分析与方法论,...
getGlobalVisibleRect() 与 getLocalVisibleRect()
1. 讲解这两个方法之前, 首先我们先看下一个图片, 只是一个简单的Activity, 一个Li...