安卓fw系统必知必会进程线程与性能监控命令详解

Android 内核加载fw通用方法分析 Android ueventd分析 阅读详情

一、进程线程相关命令

1.1 通过进程名字查看进程号

在 Android 开发调试中,查找进程 PID 是最基础的操作之一。

pidof 命令‌(最直接的方式):

adb shell pidof com.example.app

输出示例:

adb shell pidof com.example.virtualscreendemo
4179

该命令直接返回进程 ID,适合脚本化使用。

ps 命令结合 grep 过滤‌:

adb shell ps -A | grep com.example.app

输出示例:

adb shell ps -A | grep exam
u0_a186       4179   946   14523504 167736 SyS_epoll_wait      0 S com.example.virtualscreendemo

pgrep 命令‌:

adb shell pgrep -f com.xxxx

示例:

$ adb shell pgrep -f com.example.virtualscreendemo
4179
$ adb shell pgrep -f com.example.vir
4179
$ adb shell pgrep -f com.ex
4179
$ adb shell pgrep -f com
680
705
945
1016
1069

1.2 通过进程号查看进程执行文件

Android 系统调试时候,经常需要查看某个进程名字对应的可执行文件具体在哪个目录的需求,/proc 文件系统提供了完整的进程信息。

查看可执行文件路径‌:


adb shell ls -l /proc/进程号/exe

输出示例:

adb shell ps -A | grep audioserver
audioserver   1004     1      75680  23264 binder_ioctl_write_read 0 S android.hardware.audio.service
audioserver   1091     1   11564132  35220 binder_ioctl_write_read 0 S audioserver

获取进程号1091

adb shell ls -l /proc/1091/exe
lrwxrwxrwx 1 audioserver audio 0 1970-02-01 11:29 /proc/1091/exe -> /system/bin/audioserver

注意对于普通的apk启动输出是有点特殊的:

adb shell ps -A | grep exam
u0_a186       4179   946   14523504 167736 SyS_epoll_wait      0 S com.example.virtualscreendemo
得出virtualscreendemo的进程号4179

adb shell ls -l /proc/4179/exe
lrwxrwxrwx 1 u0_a186 u0_a186 0 2026-06-23 18:46 /proc/4179/exe -> /system/bin/app_process64

可以看到这里本质apk是由
/system/bin/app_process64
这个native程序拉起的。

查看进程启动命令及参数‌:

adb shell cat  /proc/1091/cmdline

/system/bin/audioserver

1.3 查看进程下的所有线程

Android 应用的每个进程默认包含主线程(UI 线程)和多个工作线程。

使用 top 命令查看线程‌:

adb shell top -H -p 1091

输出结果

Threads: 21 total,   0 running,  21 sleeping,   0 stopped,   0 zombie
  Mem:  5748944K total,  3641604K used,  2107340K free,    12076K buffers
 Swap:  3145724K total,        0K used,  3145724K free,  1810672K cached
800%cpu  17%user   0%nice  10%sys 772%idle   0%iow   0%irq   0%sirq   0%host
  TID USER         PR  NI VIRT  RES  SHR S[%CPU] %MEM     TIME+ THREAD          
 4717 audioserver  20   0  11G  34M  27M S  0.0   0.6   0:00.00 binder:1091_6  
 4715 audioserver  20   0  11G  34M  27M S  0.0   0.6   0:00.00 binder:1091_5  
 2675 audioserver  20   0  11G  34M  27M S  0.0   0.6   0:00.29 binder:1091_4  
 2147 audioserver  20   0  11G  34M  27M S  0.0   0.6   0:00.44 binder:1091_3  
 1754 audioserver   1 -19  11G  34M  27M S  0.0   0.6   0:00.12 AudioOut_3D    
 1753 audioserver  -4 -19  11G  34M  27M S  0.0   0.6   0:00.00 FastMixer      
 1747 audioserver   1 -19  11G  34M  27M S  0.0   0.6   0:00.12 AudioOut_2D    
 1746 audioserver  -4 -19  11G  34M  27M S  0.0   0.6   0:00.00 FastMixer      
 1745 audioserver  20   0  11G  34M  27M S  0.0   0.6   0:00.00 HwBinder:1091_3
 1737 audioserver   1 -19  11G  34M  27M S  0.0   0.6   0:00.07 AudioOut_15    
 1701 audioserver   1 -19  11G  34M  27M S  0.0   0.6   0:00.69 AudioOut_D     
 1699 audioserver  -4 -19  11G  34M  27M S  0.0   0.6   0:02.14 FastMixer      
 1674 audioserver  20   0  11G  34M  27M S  0.0   0.6   0:00.03 TimerThread    
 1425 audioserver   4 -16  11G  34M  27M S  0.0   0.6   0:00.18 ApmOutput      
 1424 audioserver   4 -16  11G  34M  27M S  0.0   0.6   0:00.00 ApmAudio       
 1208 audioserver   4 -16  11G  34M  27M S  0.0   0.6   0:00.00 AudioFlinger_Pa
 1201 audioserver  20   0  11G  34M  27M S  0.0   0.6   0:00.00 HwBinder:1091_1
 1202 audioserver  20   0  11G  34M  27M S  0.0   0.6   0:00.00 HwBinder:1091_2
 1148 audioserver  20   0  11G  34M  27M S  0.0   0.6   0:00.02 binder:1091_1  
^[[73;274R^Cerver  20   0  11G  34M  27M S  0.0   0.6   0:00.05 binder:1091_2  

顶部 Threads 行的 total 值即为线程总数。

使用 ps 命令‌:

adb shell ps -T -p 1091

输出结果如下

USER           PID   TID  PPID        VSZ    RSS WCHAN            ADDR S CMD            
audioserver   1091  1091     1   11564132  35220 binder_ioctl_write_read 0 S audioserver
audioserver   1091  1148     1   11564132  35220 binder_ioctl_write_read 0 S binder:1091_1
audioserver   1091  1149     1   11564132  35220 binder_ioctl_write_read 0 S binder:1091_2
audioserver   1091  1201     1   11564132  35220 binder_ioctl_write_read 0 S HwBinder:1091_1
audioserver   1091  1202     1   11564132  35220 binder_ioctl_write_read 0 S HwBinder:1091_2
audioserver   1091  1208     1   11564132  35220 futex_wait_queue_me 0 S AudioFlinger_Pa
audioserver   1091  1424     1   11564132  35220 futex_wait_queue_me 0 S ApmAudio
audioserver   1091  1425     1   11564132  35220 futex_wait_queue_me 0 S ApmOutput
audioserver   1091  1674     1   11564132  35220 futex_wait_queue_me 0 S TimerThread
audioserver   1091  1699     1   11564132  35220 futex_wait_queue_me 0 S FastMixer
audioserver   1091  1701     1   11564132  35220 futex_wait_queue_me 0 S AudioOut_D
audioserver   1091  1737     1   11564132  35220 futex_wait_queue_me 0 S AudioOut_15
audioserver   1091  1745     1   11564132  35220 binder_ioctl_write_read 0 S HwBinder:1091_3
audioserver   1091  1746     1   11564132  35220 futex_wait_queue_me 0 S FastMixer
audioserver   1091  1747     1   11564132  35220 futex_wait_queue_me 0 S AudioOut_2D
audioserver   1091  1753     1   11564132  35220 futex_wait_queue_me 0 S FastMixer
audioserver   1091  1754     1   11564132  35220 futex_wait_queue_me 0 S AudioOut_3D
audioserver   1091  2147     1   11564132  35220 binder_ioctl_write_read 0 S binder:1091_3
audioserver   1091  2675     1   11564132  35220 binder_ioctl_write_read 0 S binder:1091_4
audioserver   1091  4715     1   11564132  35220 binder_ioctl_write_read 0 S binder:1091_5
audioserver   1091  4717     1   11564132  35220 binder_ioctl_write_read 0 S binder:1091_6

单独读取进的线程数量:

adb shell grep Threads /proc/1541/status
Threads:	36

二、/proc 相关的数据

/proc 是 Android 系统中最重要的虚拟文件系统,它不占用实际磁盘空间,所有内容由内核在访问时动态生成。通过 /proc,开发者可以获取系统内核、硬件资源以及运行中进程的实时数据。

2.1 系统级 /proc 文件

表格
路径 作用
/proc/cpuinfo 显示 CPU 详细信息(型号、核心数、频率等)
/proc/meminfo 显示物理及虚拟内存使用情况
/proc/loadavg 系统平均负载(1分钟、5分钟、15分钟)
/proc/version 系统内核版本信息
/proc/uptime 系统启动时间和空闲时间
/proc/stat 系统简要统计信息
/proc/net/ 网络相关统计信息
/proc/diskstats 磁盘和分区统计信息

读取 CPU 信息示例‌:

adb shell cat /proc/cpuinfo

在这里插入图片描述

读取内存信息示例‌:

adb shell cat /proc/meminfo
MemTotal:       11550280 kB
MemFree:         1106328 kB
MemAvailable:    4676816 kB
Buffers:            2340 kB
Cached:          3859768 kB
SwapCached:      1141944 kB
Active:          2100504 kB
Inactive:        4091368 kB
Active(anon):     914044 kB
Inactive(anon):  2285092 kB
Active(file):    1186460 kB
Inactive(file):  1806276 kB
Unevictable:      860824 kB
Mlocked:          231604 kB
SwapTotal:      12582908 kB
SwapFree:        8028868 kB
Dirty:               156 kB
Writeback:             0 kB
AnonPages:       2592532 kB
Mapped:          1506168 kB
Shmem:            651404 kB
KReclaimable:     821784 kB
Slab:             885216 kB
SReclaimable:     280632 kB
SUnreclaim:       604584 kB
KernelStack:      128800 kB
ShadowCallStack:   32224 kB
PageTables:       221976 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    18358048 kB
Committed_AS:   148925136 kB
VmallocTotal:   263061440 kB
VmallocUsed:      376316 kB
VmallocChunk:          0 kB
Percpu:            16896 kB
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
FileHugePages:         0 kB
FilePmdMapped:         0 kB
CmaTotal:         266240 kB
CmaFree:               0 kB

关键字段说明:

MemTotal:所有可用 RAM 大小
MemFree:未被使用的内存
Cached:被高速缓冲存储器使用的内存
SwapTotal:交换空间总大小

2.2 进程级 /proc/[PID] 目录

每个运行中的进程在 /proc 下都有一个以 PID 命名的子目录,包含该进程的详细信息。

proc的子目录数据详细列表对应



路径	作用
/proc/PID/exe	可执行文件的符号链接
/proc/PID/cwd	当前工作目录
/proc/PID/cmdline	启动命令及参数
/proc/PID/environ	进程环境变量
/proc/PID/status	进程状态(含 Threads 线程数)
/proc/PID/fd/	打开的文件描述符目录
/proc/PID/maps	内存映射信息

三、env 相关的命令

3.1 查看进程环境变量

通过 /proc 查看指定进程的环境变量‌:

adb shell cat  /proc/1091/environ

输出如下
在这里插入图片描述

3.2 查看当前 shell 环境变量(注意不是具体某个进程)

adb shell env
adb shell printenv
adb shell echo $PATH

在这里插入图片描述

这里需要注意每个进程都会有自己的env环境变量,切勿把adb shell env当成所有的进程env

四、top 查看 CPU 相关的命令

4.1 基本用法

查看整体 CPU 使用率‌:

adb shell top

常用参数‌:

adb shell top  --help
Toybox 0.8.11-android multicall binary (see toybox --help)

usage: top [-Hhbq] [-k FIELD,] [-o FIELD,] [-s SORT] [-n NUMBER] [-m LINES] [-d SECONDS] [-p PID,] [-u USER,]

Show process activity in real time.

-H	Show threads
-h	Usage graphs instead of text
-k	Fallback sort FIELDS (default -S,-%CPU,-ETIME,-PID)
-o	Show FIELDS (def PID,USER,PR,NI,VIRT,RES,SHR,S,%CPU,%MEM,TIME+,CMDLINE)
-O	Add FIELDS (replacing PR,NI,VIRT,RES,SHR,S from default)
-s	Sort by field number (1-X, default 9)
-b	Batch mode (no tty)
-d	Delay SECONDS between each cycle (default 3)
-m	Maximum number of tasks to show
-n	Exit after NUMBER iterations
-p	Show these PIDs
-u	Show these USERs
-q	Quiet (no header lines)

Cursor UP/DOWN or LEFT/RIGHT to move list, SHIFT LEFT/RIGHT to change sort,
space to force update, R to reverse sort, Q to exit.

示例‌:

adb shell top  -m 10 

4.2 top 输出解读

系统信息栏‌:

Tasks: 2 total, 0 running, 2 sleeping, 0 stopped, 0 zombie

total:当前系统进程总数
running:当前运行中的进程数
sleeping:处于等待状态的进程数
stopped:被停止的进程数
zombie:僵尸进程数

CPU 状态行‌:

text
%Cpu(s): 12.5 us, 3.2 sy, 0.0 ni, 82.1 id, 1.8 wa, 0.2 hi, 0.2 si, 0.0 st

字段	含义
us	用户空间 CPU 占用率
sy	内核空间 CPU 占用率
ni	改变过优先级的进程 CPU 占用率
id	空闲 CPU 百分比
wa	I/O 等待占用 CPU 百分比
hi	硬件中断占用
si	软件中断占用
st	虚拟机被宿主机抢占的时间

进程列表栏‌解答:

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ ARGS

PID:进程 ID
USER:进程所属用户
PR:进程优先级
NI:Nice 值(调度优先级)
VIRT:虚拟内存使用量
RES:常驻物理内存使用量
SHR:共享内存使用量
S:进程状态(R=运行中,S=睡眠中,D=不可中断睡眠,Z=僵尸进程)
%CPU:CPU 使用率
%MEM:内存使用率
TIME+:进程运行总时间
ARGS:进程启动命令和参数

注意‌:在多核处理器上,多个进程的 CPU 使用率累加可能超过 100%,这是因为系统将各核心上的 CPU 使用率相加计算总使用率,属于正常现象。

原文参考:

https://mp.weixin.qq.com/s/dN1KfxX3_WTkfPru270V2Q

Android FW启动优化说明 网上关于启动优化的分析等文章应该很多了,比如启动时序、耗时统计、分析工具啥,这里就不再过多说明。本文旨在告诉你如何有效进行系统优化启动(分析版本Android P),仅供参考。 目录 Android系统正常开机时序 zygote systemserver 服务启动阶段(优化) PMS扫描(优化) 服务就绪阶段 用户数据解锁 提前解锁用户数... 阅读详情

相关推荐

android fw systemserver之MountService分析

文章目录前言分析MS工作模式总结参考 前言 MountService是Android系统中众多systemserver中一员,其工作主要是与native sever Vold共同管理Android系统中的磁盘模块。 MountService:Android Binder服务端,运行在system_server进程,用于跟Vold进行消息通信,比如MountService向Vold发送挂载SD卡的命...

wang 恒 的博客 1112

Android源码开发篇(四)Android FW代码调试

来点前奏说明 当你打开这个文档的时候,你已经做好准备了,话不多说开搞。前提你得有源码,源码参考 Android源码开发篇(一)9.0/10.0源码下载 编译 刷机 在Android升级到P之后,Google默认强制打开了pre-odex,导致本地调试的时候修改fw代码push之后不work或者开不了机器。原因在于打开pre-odex的情况下,对于bootclasspath系统会默认生成oat/...

张彬的博客 1298

OpenClaw 核心命令深度解析:/think high、/reasoning on、/verbose on 功能与实战指南

本文深入解析OpenClaw框架的三大核心命令:/think high实现极限深度推理,突破常规思考瓶颈;/reasoning on提供透明化推理过程,增强决策可信度;/verbose on控制详细输出级别。文章从技术架构、实现原理、配置方法和典型场景四个维度,详细阐述了各命令的功能特性与实战应用,包括法律分析、代码调试和商业决策等复杂场景的最佳实践。同时提供了多级配置方案和资源消耗参考,帮助用户根据任务复杂度灵活调配AI资源,实现效率与深度的最优平衡。

qq_43344878的博客 947

Android Camera FW分析4(Qualcomm )

Android Camera FW分析4(Qualcomm )---startPreview流程分析

ListQ的博客 203

生物信息学新手必备:5分钟搞定GEO补充数据下载(含西柚云代理配置)

本文为生物信息学新手提供了快速下载GEO数据库补充数据的完整方案。核心在于解析GEO文件存储逻辑,构造正确的FTP下载链接,并利用云端代理服务(如西柚云)解决国内访问NCBI速度慢、易中断的问题。通过分步教程,用户无需命令行即可在5分钟内稳定获取大型测序文件,极大提升数据获取效率。

weixin_28314575的博客 638

RK3566添加ffpeg【Buildroot系统】

有很多人都发现了RK3566系列的芯片是不可以直接使用ffmpeg官网源码的!会报错: Not a video capture device. /dev/video0: No such device 接下来我们就来解决这个问题!!

honmy18的博客 4070

Android camera fw学习(二)-open camera操作过程&准备工作分析。

备注:本文基于Android5.1、Camera hal3学习,默认情况下参考代码都是5.1的,如有其它版本的源码,我会标出来的。博文是看代码分析和一些工作经验的总结,如有疑问,大家可以相互讨论,共同进步。  当前博文主要是为后续的StartPreview,takepicture等流程分析做铺垫的,在open camera->start preview过程中,其实做了很多事情。这里不去叙述上层app

armwind的专栏 6074

中国1990-2021连续30年土地利用CLCD数据分享

CLCD(China Land Cover Dataset)数据集是由武汉大学黄昕老师基于Google Earth Engine上的335,709景Landsat数据制作的中国年度土地覆盖数据集。为了提高CLCD的时空一致性,还提出了一种包含时空滤波和逻辑推理的后处理方法。该数据集最大的优势在于每年30米的土地利用分类结果,且连续覆盖了30年时间。相比其他产品如GLC_FCS30、Global30、AGLC2000_2015、FROM-GLC10、ESA10、ESRI10等,CLCD在时间分辨率上更高。

qq_48539301的博客 1万+

安卓开发中后台定位权限限制详解

摘要:Android 10引入的后台定位权限(ACCESS_BACKGROUND_LOCATION)改变了位置访问机制,导致应用在后台无法获取位置数据。本文分析了权限模型的变化、问题表现及根本原因,并提供了针对不同Android版本的解决方案: 权限拆分:Android 10将位置权限分为前台和后台权限,必须同时声明并获取"始终允许"授权 问题表现:后台定位静默失败、轨迹中断、权限请求异常等 解决方案: Android 10:一次性请求前后台

深山技术宅的博客 864

C#与西门子PLC通讯——新手快速入门

本文基于C# .Net Core和西门子博图TIA Portal V17搭建。由于手边没有西门子PLC实物,所以采用S7-PLCSIM Advanced V4.0作为模拟PLC,以实现0成本完成通讯测试实例。这篇入门笔记解决了新手第一次上手实践时遇到的坑,并且有意忽略了实际项目中会遇到的逻辑交互和更多的数据格式问题。

吾家有猫名探花的博客 2万+

kaggle注册以及数据集下载全流程

kaggle注册,数据集下载及常见问题

Arriteey的博客 2万+

性能优化实战:从原理到工具链的完整指南

性能优化是软件开发中的核心工程实践,其本质是通过系统化的方法提升资源利用效率。从技术原理层面看,性能问题通常源于CPU计算瓶颈、内存管理不当、I/O操作低效等基础环节。在工程实践中,合理运用监控工具和性能分析方法是关键,比如通过jstack分析线程状态,使用iostat诊断磁盘I/O瓶颈。这些技术不仅能解决响应延迟、吞吐量下降等具体问题,在微服务架构、大数据处理等高并发场景中尤为重要。本文聚焦性能优化的系统性方法论,涵盖从问题定位到实战优化的完整工具链,特别针对内存泄漏诊断和I/O性能调优等高频痛点提供具体

weixin_30399155的博客 350

[DDR5]DDR5 SDRAM 状态图 和 基本功能

DDR5 SDRAM的读写操作以突发(burst mode)为导向,从选定的位置开始,并按照编程顺序进行16个突发长度或8个“切片”突发长度的操作。从ACTIVATE命令开始,然后是读取或写入命令。

串起点滴 1202

RealSense SDK架构深度解析:从立体视觉到企业级三维重建的完整实战指南

Intel RealSense SDK 2.0作为业界领先的深度相机开发框架,为计算机视觉和三维感知应用提供了完整的技术栈。本指南将深入剖析RealSense SDK的核心架构设计、深度计算原理、企业级部署策略以及生产环境优化实践,帮助中高级开发者掌握这一关键技术栈。 ## 技术背景与行业痛点分析 在机器人导航、工业检测、医疗成像和增强现实等前沿领域,精确的三维感知能力已成为核心技术瓶颈。传统

gitblog_01027的博客 1018

仿真学习系列(四十九):Sigrity仿真之电容库制作

在高速电路设计中,电源完整性(PI)是确保系统稳定、可靠运行的关键因素。随着电子产品对性能的要求不断提升,PDN(电源分配网络)的设计与优化变得尤为重要。为了确保电源网络在高速工作状态下不会引发电压波动和信号干扰,我们需要在设计中精确地选择电容器进行优化,而电容库的制作则是这一过程的核心。 OptimizePI作为一个强大的电源完整性优化工具,能够帮助设计师根据不同的目标,批量进行PDN仿真,以得出最佳电容选择。

案例文章,高速信号 227

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Android framwork 详细开发指南

可能他们是一个Android开发者,想要深入理解Android系统的底层机制,或者他们可能在开发需要定制系统功能的应用程序,比如修改系统设置、处理系统服务或者与硬件交互。此外,系统应用的开发也是一个重点,比如如何创建系统应用,需要哪些权限,签名问题如何处理。另外,定制系统功能可能涉及修改系统服务或添加新的API,这部分需要解释如何通过继承系统类、使用隐藏API以及处理兼容性问题。安全性方面也是不可忽视的,权限管理和签名机制是系统开发中的关键点,需要详细说明如何配置权限和使用平台签名。

缘来的精彩的博客 1315

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Android fw修改让app方向跟随系统方向

平台:qcom msm8953 android7.1 现象:客户app或者应用商城下载的app在我们自己的Android板上运行是,会出现反方向显示的情况,如系统方向是90°,运行某些app,app打开后会是270°的方向。 解决方法: 思路1:理清AndroidGUI系统显示框架,刚开始从底层想去理清AndroidGUI系统显示框架,结果越看涉及的知识越来愈多,最后看的头脑一点都不清...

wang 恒 的博客 2061

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Android AOA 通道 FW 层建立

                     基于LC6500 模块AOA 通道的建立     1.AOA 介绍 AOA 为Android Open Accessory的缩写,简单点说,就是Android支持的USB 设备形态中的一种。 一个Andorid系统的AOA模式分为两种:   HOST模式:     Android 设备在HOST模式下,将会提供电源给外部设备并与之建立通...

pirionFordring的博客 1909

android fw调试 按键派发给谁

在android维护或者开发的时候,经常和应用的同事干仗。 原因就是某些测试情况下,按键或者点击没有被相应。 app同事说:我草,你大爷,我就没收到,我没法相应。 这个时候为了打脸,你就需要在fw添加log,打印的log可以清楚的看到,事件到底派发给谁了。 文件view.java中函数 public boolean performClick() { sendAcc

shi_xin的专栏 718

Android Camera fw学习(一)-类之间的关系和作用

Android Camera学习(一)-类之间的关系和作用备注:本文基于Android 5.1分析,可能已经过时了,不过里面的原理和现在7.0基本一样。博文为个人看代码笔记,如有问题,请发表意见大家一起学习,进步。后续的博文会沿着下面几步来走,把自己对Camera分析总结一下。 1.简单介绍Camera几大接口类,以及相关类的继承关系(也就当前博文) 2.app->jni->native详细分析op

armwind的专栏 4334

定制android启动界面

本文想要说的是如何定制android设备启动后进入的初始界面,具体说来就是目前android默认起来以后直接进入,现在想给它加一些其他的选项,如图所示:screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor=hand; this.alt=Click here to o

sijiangong的专栏 2506

Android Visualizer 实战:把声音画出来

是系统提供的音频效果(AudioEffect)之一。它挂在音频链路上,,把数据回吐给你——画波形、画频谱、做响度表。

Android的专栏 310

Android 开发入门实践(十三):用 Intent、UiState 和 Reducer 理解 MVI 的状态更新

本文记录第141—145课对MVI架构的入门实践,通过“返回列表”功能逐步构建意图(NewsIntent)、状态(NewsUiState)与状态转换(reduce)机制。基于单向数据流,用户操作生成意图,ViewModel通过Reducer根据旧状态计算新状态,并通过StateFlow更新Compose界面。代码实现清晰分离关注点,强化了对状态管理、事件驱动与数据流的理解。

Easyhood的博客 341

Android Message源码阅读

本文梳理了Android Handler机制中Message的核心设计:链表结构、消息复用池(sPool)及回收机制,重点解析了异步消息与同步屏障(SyncBarrier)的协同机制。当主线程需优先处理UI绘制等高优先级任务时,系统通过postSyncBarrier插入屏障,使Looper跳过普通同步消息,优先执行标记为异步的UI渲染任务,确保帧率流畅。该机制是保障Android界面响应性的关键技术之一。

u012116089的博客 206

RK-RK3572-Android16- 编译打包优化-OTA整包-差分包打包

这里主要记录一下 RK3572 在Android16 上面进行OTA升级的整包和差分包制作经验的一个分享,整理知识点,方便后续自己和其它同事开发提高工作效率、直接使用。不管哪一个平台,MTK 也好、RK也好 基本上都是不同Android版本各个子系统之间还是有一点点区别的,所以有必要记录整理知识点,方便提高开发效率、生产效率。针对OTA升级问题 ,再一次说明还是要看官方提供的文档,按照文档来。

十年饮冰,难凉热血 196

安卓APK下载后安装全流程:从点击下载到第一次启动,每一步的检查点

这套流程听起来繁琐,但真正需要每次都做的只有来源核对和签名校验两步,其他都是出问题时才查。养成习惯之后,能挡掉绝大多数"装了垃圾包""装完闪退"的情况。如果要省事,直接用这类会标注包名、版本号和校验信息的站点,比在搜索结果里挨个试要稳得多。

qq362196705的专栏 161
上一篇: wms你会吗?一起来分析aosp原生窗口显示bug-vip学员作业
下一篇: 重重学app冷启动流程桌面点击到SplashWindow显示与移除流程剖析-aosp16
千里马学框架
博客等级 码龄6年 1万+粉丝 651原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千里马学框架

帮助你了,就请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值