- 分类
- Android
Android 图形渲染与 View 体系:绘制、刷新与 Surface 家族
ViewRootImpl 与绘制流程、Vsync 与刷新机制、SurfaceView / TextureView / SurfaceTexture 的区别,以及 View 滑动的几种实现方式。
- 2026/09/16 14:22
- 0
- 0
- 0
- 24.0℃
Jetpack 组件速查:按族归类,而不是逐个记 API
按族归类而不是逐个记 API:数据与状态(ViewModel / LiveData / DataStore / ROOM)、UI 绑定、生命周期、依赖注入,附新老替代与分工对照表。
- 2026/09/16 14:22
- 0
- 0
- 0
- 24.0℃
Android 性能优化工具链:从线上指标到本地抓帧再到具体优化
先定位再优化:Android vitals 看线上、Perfetto 抓帧、Studio Profiler 排障、GPU Inspector 看渲染、Macrobenchmark 测启动,再落到内存与网络两类具体优化,附工具对照表。
- 2026/09/16 14:21
- 0
- 0
- 0
- 24.0℃
Android Framework 实战全景:从开机链路、核心服务到窗口形态
Android系统服务链路排查需沿着init→system_server→核心组件(AMS/WMS/IMS)→合成层(SurfaceFlinger)→窗口形态的层级调试。开机链路中BootAnimation依赖zip未压缩、宽高与帧率配置正确,预装app需放在system/priv-app并白名单权限;PMS扫描包时需处理split apk与OTA遗留的可见性问题;AMS因锁持过长或广播队列溢出易致系统卡顿,需用dumpsys activity配合systrace追踪;WMS负责窗口层级管理,适配多屏需分离DisplayContent输入,自由窗口需声明resizeable并处理焦点跨屏问题,卡顿常因无效半透明层或频繁lockCanvas。Native层调试需CallStack日志,避免在线程中read / log,车机多屏需分别配置bootanimation.zip。构建系统使用Android.mk时要注意LOCAL_PATH模块路径依赖,LOCAL_SHARED_LIBRARIES链接冲突与芭芭拉调试包可见性适配。附服务速查表明确各服务职责(如PMS管安装扫描、IMS主输入分发)及核心排查指令(dumpsys window/PMS package)。适用场景包括系统定制、性能优化、app模块升级失败、输入异常及Native崩溃定位。
- 2026/09/16 14:21
- 2
- 0
- 0
- 24.2℃
Android 自定义 View 实战:测量、布局与滚动协商
Android自定义View核心要点:正确设置LayoutParams(注意类型匹配、测量阶段、布局回填),换行类实时测量三阶段(收集尺寸→预计算高度→动态摆放),瀑布流通过列高数组维护滚动状态,吸顶用ItemDecoration绘制悬浮层而非修改真实布局位置,嵌套滚动需严格中小窗口调用接口顺序,CoordinatorLayout依赖Behavior实现子控件的滚动手势与吸附逻辑,瀑布流和列表建议优先使用StaggeredGridLayoutManager避免主线程爆炸,Independant滚动时需谨慎处理子布局生命周期,Simulation类选型需结合内容复杂度与交互帧数(Prompt:请问如何优化吸顶布局的性能问题?)
- 2026/09/16 10:06
- 6
- 0
- 0
- 24.6℃
Android 图形显示系统:Canvas、Skia、Surface与SurfaceFlinger
Android图形系统通过四步实现应用页面到屏幕的渲染:由ViewRootImpl发起的绘制请求触发View树遍历,View重写onDraw生成Canvas命令描述图形。Canvas指令经Skia处理,可选择CPU光栅或GPU加速完成(OpenGL ES/Vulkan),输出至Surface Buffer。Surface作为生产端接口,通过BufferQueue轮换提交图形数据给结果器。最终由SurfaceFlinger聚合所有可见Layer的Buffer,经Hardware Composer合成后输出至屏幕。比利时系统各组件职责明确,WindowManager控制窗口层级与位置,SurfaceFlinger执行最终合成,Skia和RenderThread负责分不同后端实现渲染。硬件加速通过RenderNode记录可复用指令,分UI和Render线程协作提升效率。SurfaceView通过独立Surface绕过主View树绘制,适合视频解码等高帧率场景。需注意误区:Surface是动态Buffer队列,Canvas不直接操作屏幕,SurfaceFlinger仅负责合成不参与绘制。核心价值在于通过分层设计实现高扩展性与高效渲染,平衡CPU与GPU负载,确保多图层协同输出。
- 2026/07/10 13:51
- 16
- 0
- 0
- 25.6℃
Android 界面体系:Activity、Window、View 与 ViewRootImpl
Android界面体系按组件职责分层实现:Activity负责页面逻辑和生命周期,通过Window抽象承载DecorView根节点;PhoneWindow作为实现类创建DecorView并管理窗口属性;DecorView通过内容容器(mContentParent)承载业务View树。ViewRootImpl协调View树测量布局绘制,驱动measure→layout→draw流程,并与系统WindowManagerService通过Binder通信完成窗口挂载。WindowManager通过WindowManagerGlobal管理各进程窗口,最终由WindowManagerService统一管理全屏幕窗口层级、布局和事件分发。核心调用链为:Activity.setContentView→PhoneWindow.setContentView→DecorView解析布局→ViewRootImpl驱动视图树及系统窗口连接。
- 2026/07/10 13:51
- 35
- 0
- 0
- 27.5℃
Android WAP联网
文章解析Android中WAP联网的历史背景与当前处理方式。早期因网络限制,应用需根据APN类型自动判断:若识别为CMWAP等WAP接入点,则通过10.0.0.172:80代理发送HTTP请求。现代Android系统通过ConnectivityManager、NetworkCapabilities等接口自动处理路由代理逻辑,普通应用无需手动配置APN或代理。硬编码旧APN(如cmwap)存在多运营商适配失效、国际网络异常、HTTPS拦截等问题,建议仅特殊场景(如运营商定制应用、企业专网、IoT设备)使用系统API主动配置网络连接与代理。现代开发应直接调用OkHttp等HTTP客户端发送HTTPS请求,并结合NetworkCallback监听网络状态变化,避免依赖APN名称或静态代理信息。
- 2026/07/10 12:46
- 20
- 0
- 0
- 26.0℃
Android drawable和mipmap有啥区别?
Invariant resource types in Android design serve distinct purposes:Drawable contains UI elements like backgrounds, icons, and buttons while Mipmap exclusively holds application icons for Launcher display. Key differences include:
1. Purpose - Mipmap ensures system-provided density-independent scaling for app icons across devices, maintaining quality through multiple resource Dirkets(mdpi-xhdpi-xxhdpi). Drawable handles dynamic UI assets needing precise layout control.
2. Android 8+ Recommendations - System mandates mipmap placement for adaptive icon support since Android 8.0's Vector Drawables and Adaptive Icons introduced. Incorrect placement causes resource indexing errors and display artifacts.
3. Common Mistakes - Placing app icons in drawable prevents adaptive rendering. Conversely, placing UI elements in mipmap creates unnecessary resource confusion. Files in wrong directories lead to runtime crashes or unintended Liberation gradients.
4. Legacy Projects - Existing apps using.drawableLaunchers remain functional but risk violates modern guidelines without migration. New projects strictly follow mipmap for icons and drawable for graphical UI components.
Developers should implement:){
√ radical anydpi-v26目录规范新应用的图标资源
√ drawable目录持续承载按钮、界面对象
√ 避免跨目录调用导致资源错位
}通过 проводится соответствие Android Team guidelines for optimal deliver experienced both system and user end.
- 2026/07/10 12:31
- 22
- 0
- 0
- 26.2℃
Android 应用安全
应用全生命周期安全防护需分六步实施:第一步建立安全开发生命周期(SDL),制定安全编码规范,关键模块使用Rust等内存安全语言,集成CI/CD自动化扫描和渗透测试;第二步实施多层次加固,包括代码混淆加密、签名校验、动态防御和环境检测;第三步强化通信与存储安全,采用SSL绑定、双向认证、国密算法及TEE硬件加密;第四步加强运行时保护与分发管控,部署RASP实时防御和UEM终端审核;第五步满足等保2.0、密评等合规要求,通过杀毒软件与主流应用商店审核;第六步根据行业风险等级选择方案,如金融政务用阿里云mPaaS或Guardsquare,普通企业用梆梆安全或Digital.ai,预算有限者可基础混淆,但需通过真实POC测试验证防护效果。成熟方案可提供等保整改和隐私检测报告,降低企业合规成本。
- 2026/07/09 12:17
- 30
- 0
- 0
- 27.0℃