banner
fwrite

fwrite

好好生活
twitter
github
email
cover
cover

Android View 事件分发

事件传入 事件是从 Activity 通过一层层传递至 View 中 事件分发概念 主要是由 3 个方法来完成 分发重点方法 功能 返回意义调度触摸事件:布尔值 由上层 View 被触发,传递至目标 View 返回结果会由 、子…
cover

AudioRecord

初始化 Copy public AudioRecord(int audioSource, int sampleRateInHz, int channelConfig, int audioFormat,int bufferSizeInBytes) 关于采样率,除了 44100Hz…
cover

Android 源码编译

使用 apt 安裝以下工具 先使用 apt 安装以下工具 Copy sudo apt upgrade sudo apt update sudo apt install -y \ vim \ git-core \ gnupg \…
cover

Handler机制

概述 类 说明Handler 真正处理事件的地方 Looper 循环检查是否有要传输的事件,从 MessageQueue 中获取事件,并交给 Handler 处理(假如列队为空就进入休眠) MessageQueue 储存需要做的事情,一般来说…
cover

Service

Service 概述 Service 特点 Service 也是 AMS 所管理的对象 Service 可以单独启动,而不用跟随 Activity 一起启动 (但同样要启动该 Service 所属的进程,也就是 ActivityThread) AMS 会通知…
cover

WMS

WMS 全名是 WindowManagerService,它是客户端 APP 的管理者,处于 SystemServe r 进程,WMS 主要负责管理几件事情 窗口管理 负责 Window 添加、更新、删除,核心管理成员有 DisplayContent、WindowToken、Wi…
cover
cover
cover
cover
cover
cover
cover
cover
cover
cover
cover
cover
cover
cover

Input输入事件处理流程

安卓中输入事件主要分为 KeyEvent 和 MotionEvent 两种 传递流程 这里首先 eventhub 构建的时候会遍历整个 /dev/input 路径下的 fd,并将其添加到 epoll 中,同时还会监听此路径下新的设备的创建和卸载。当 driver…
cover

PackageManagerServervice

PackageManagerServervice 通过 SystemServer 进程启动,该服务会 扫描系统中特定的目录,寻找里面的 APK 格式文件,并对这些文件进行解析(得到 AppInfo 相关讯息),最后完成安装。 PKMS 会在安装应用的过程中解析 APK 中的 An…
cover

Activity启动

启动 Activity Copy // 启动指定 Activity void startBootActivity() { Intent i = new Intent(this, BootActivity.class…
cover

AMS

AMS 通过 SystemServiceManager 来启动 Copy public final class SystemServer implements Dumpable { public static void main(String…
cover

Init进程

启动概述 Android 的第一个启动进程,init 的 PID 为 1,这个进程会解析 init.rc 来建构出系统的初始运作型态,其他的系统才会相继启动 启动电源&系统启动 当电源启动后,会从预定的地方(PC 读取 ROM),开始加载程序(BootLoader)到 RAM 中…
cover

APK 瘦身

APK 结构 在讨论如何减小应用的大小之前,了解应用 APK 的结构会很有帮助。APK 文件由 Zip 压缩文件(其中包含构成应用的所有文件)组成。这些文件包括 Java 类文件、资源文件和包含已编译资源的文件。 APK 包含以下目录: META-INF/:包含 CERT.SF…
cover
cover
cover
cover
cover
cover
cover
cover
cover
cover
cover
cover

图像与视频

图像编码 一张图片可以使用一个二维矩阵表示,矩阵中的每一个点被称为像素。每个像素的颜色使用三原色来表示,即红、绿、蓝。 每个像素可以用不同的数据位数来表示,常用的量化位数有 16 位、24 位、32 位等。 24 位比特模式:每像素 24 位(bits per pixel…
cover
cover
cover
cover
cover
cover
cover
cover

网络知识

UDP# 面向报文 UDP 是一个面向报文(报文可以理解为一段段的数据)的协议。意思就是 UDP 只是报文的搬运工,不会对报文进行任何拆分和拼接操作。 在发送端,应用层将数据传递给传输层的 UDP 协议,UDP 只会给数据增加一个 UDP 头标识下是 UDP 协议…
cover
cover
cover
cover
cover
cover

H264

概念 SODB: 数据比特串 -> 最原始的编码数据 RBSP: 原始字节序列载荷 -> 在 SODB 的后面填加了结尾比特(RBSP trailing bits 一个 bit “1”)若干比特 “0”, 以便字节对齐。 EBSP: 扩展字节序列载荷– > 在 RBSP…
cover
cover
cover
cover
cover

AOSP调试指南

编译 Android 使用 envsetup.sh 脚本初始化环境:source build/envsetup.sh 或者. build/envsetup.sh 如需查看可用命令的完整列表,请运行以下命令:hmm Framework 调试 top VIRT:这个内存使用就是…
cover
cover
cover
cover
cover

MediaCodec

架构 MediaCodec 的 Decoder 现在有两种方式,分别为 OMX 和 Codec2,Android 目前全面在替换 OMX。 OMX 开放多媒体加速层(Open Media Acceleration,缩写为 OpenMAX). 一个免费的跨平台抽象软件层…
cover

App 体积优化

使用 Android App Bundle 上传应用 要在发布到 Google Play 时立即缩减应用大小,最简单的方法就是将应用发布为 Android APP Bundle,这是一种全新的上传格式,其中包含应用的所有经过编译的代码和资源,但 APK 生成及签名则延后到…
Ownership of this blog data is guaranteed by blockchain and smart contracts to the creator alone.