自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

执剑人

我们眼中的星星像幽灵,星星眼中的我们也像幽灵

  • 博客(115)
  • 收藏
  • 关注

原创 Android 图形系统之七:SurfaceFlinger

SurfaceFlinger 是 Android 系统中一个极为关键的系统服务,处于图形显示架构的核心位置,主要负责将各个应用层提供的 Surface(代表可视化的界面元素)进行合成,并最终输出到屏幕显示,起到了承上启下的桥梁作用,衔接应用层与硬件显示层。

2024-12-01 18:49:23 2471

原创 Android 图形系统之六:BufferQueue

BufferQueue是Android图形系统的核心组件之一,用于实现生产者-消费者模型的图像数据传递。它负责协调图像缓冲区的分配、传递、显示,广泛用于窗口系统、Surface、OpenGL ES渲染管道等场景。

2024-12-01 12:29:12 1132

原创 Android 图形系统之五:Gralloc

Gralloc (Graphics Allocator) 是 Android 系统中的关键组件之一,用于管理图形缓冲区的分配、映射以及处理。在 Android 的图形架构中,Gralloc 充当了 HAL (Hardware Abstraction Layer) 的一部分,为系统和硬件提供了通用的接口,使应用程序能够高效地处理图形数据。

2024-12-01 12:07:10 1317

原创 Android 图形系统之四:Choreographer

Choreographer 是 Android 系统中负责帧同步的核心组件,它协调输入事件、动画和绘制任务,以确保界面以固定频率(通常是每 16ms,一帧)流畅渲染。通过管理 VSYNC 信号和调度任务,Choreographer 是实现流畅 UI 体验和高效资源利用的关键。

2024-11-29 21:37:01 1205

原创 Android 图形系统之三:SurfaceControl

在 Android 系统中,SurfaceControl 是一个关键的类,用于管理应用窗口和屏幕上的显示内容。它与 SurfaceFlinger 紧密交互,通过 BufferQueue 提供高效的图形缓冲区管理能力。

2024-11-29 21:19:20 1457

原创 Android 图形系统之二:ViewRootImpl

ViewRootImpl 是 Android UI 系统的核心类之一,负责将 View 层级树与窗口管理器 WindowManager 联系起来。它是 Android 应用视图的根节点,与 WindowManager 结合,实现视图的绘制、事件分发、窗口更新等功能。虽然 ViewRootImpl 是一个内部类(非公开 API),但它在整个视图渲染管线中至关重要。

2024-11-29 21:10:26 1156

原创 Android 图形系统之一:概览

Android 图形系统是一套完整的架构,用于管理从应用绘制到显示屏幕的整个流程。它涉及多个层次和组件,从应用程序到硬件,确保每一帧都能准确、高效地呈现到用户的设备屏幕上。

2024-11-27 22:08:08 1297

原创 SurfaceFlinger学习之一:概览

SurfaceFlinger 是 Android 系统中负责合成和显示屏幕内容的关键系统服务,它运行在一个专用的进程中 (system/bin/surfaceflinger)。它的主要职责是将不同应用程序的绘制内容(即窗口或表面)组合起来,通过硬件抽象层(HAL)发送到屏幕上。

2024-11-27 21:29:06 692

原创 Linux中的共享内存

在Linux中,共享内存是一种高效的进程间通信(IPC)机制,允许多个进程共享一块内存区域,从而实现数据的快速传递和共享。它的特点是可以直接访问共享的内存,无需额外的拷贝操作,因此速度非常快。

2024-11-25 22:37:39 614

原创 Android Binder技术概览

Android中的Binder是一种基于远程过程调用(Remote Procedure Call, RPC)的轻量级通信机制,核心用于 Android 系统中的进程间通信(Inter-Process Communication, IPC)。Binder 是 Android 系统中不可或缺的一部分,支撑着系统服务、应用组件间的高效通信。

2024-11-23 20:09:46 1127

原创 Android中的依赖注入(DI)框架Hilt

Hilt 是 Android 提供的一种依赖注入(DI)框架,它基于 Dagger,目的是简化依赖注入的使用,提供更易用的接口和与 Android 生命周期组件的紧密集成。

2024-11-23 20:03:28 918

原创 一文学习Android系统核心服务ServiceManager

ServiceManager 是 Android 系统中核心的系统服务注册与发现机制,它在 Android Framework 层扮演服务注册中心的角色。它允许进程通过它注册、查询和使用系统服务,实现进程间通信 (IPC) 的基础架构。

2024-11-23 19:57:04 1327

原创 一文学习开源框架OkHttp

OkHttp 是一个现代化、功能强大的网络请求库,主要用于与 RESTful API 交互或执行网络通信操作。它是 Android 和 Java 开发中非常流行的 HTTP 客户端,具有高效、可靠、可扩展的特点。

2024-11-23 19:34:33 753

原创 什么是沙箱(Sandbox)技术

沙箱技术是一种重要的计算机安全机制,主要用于隔离程序运行环境,以防止恶意代码或应用程序对系统和数据造成破坏。通过限制代码的访问权限和行为,沙箱为程序提供了一个受控且隔离的执行环境

2024-11-23 19:26:10 1447

原创 Perfetto学习大全

Perfetto 是一个功能强大的性能分析和追踪工具,主要用于捕获和分析复杂系统中的事件和性能数据,特别是在 Android 和 Linux 环境下。它的核心目标是帮助开发者深入了解系统和应用程序的运行状态,以便优化性能和诊断问题。

2024-11-22 21:46:14 1285

原创 一文学习开源框架LeakCanary

LeakCanary是一个由 Square 开发的开源工具,主要用于检测和诊断 Android 应用中的内存泄漏问题。它通过自动化的方式帮助开发者捕捉和分析可能导致内存泄漏的对象,简化了内存问题的排查过程。

2024-11-22 20:59:54 1275

原创 同步的意义以及机制

同步(Synchronization)的意义在于确保在多线程环境中,多个线程对共享资源的访问是安全的,避免竞争条件(race conditions)和数据不一致的情况。

2024-11-21 22:22:08 1062

原创 Java线程池详解

线程池是一个非常重要的并发编程工具,可以有效管理和复用线程,避免资源浪费,提高性能。在使用时,可以根据具体的需求选择合适的线程池类型,并掌握一些线程池的配置和优化技巧。

2024-11-21 22:15:17 847

原创 一文学习开源框架EventBus

EventBus 的核心是基于发布-订阅模式,通过EventBus类来管理事件的注册、发布和解除注册。它使用了反射来动态查找订阅者的方法,并通过线程池和 Handler来管理事件处理的线程。事件的发布和处理是异步和同步结合的,支持多线程的灵活调度。通过这种设计,EventBus 实现了高效、解耦的事件分发机制,是一个非常强大的工具,简化了组件之间的通信,提供了简单的 API 和灵活的事件处理机制。然而,它的性能开销、调试困难等问题也需要开发者在使用时进行权衡。

2024-11-21 22:04:04 1229

原创 树莓派可以做哪些创意?

树莓派是一款功能强大的单板计算机,可以用来实现各种创意项目。

2024-11-20 20:43:12 1001

原创 树莓派的发展历史

树莓派(Raspberry Pi)是由英国的树莓派基金会开发的一系列单板计算机,其目标是为了促进计算机科学教育,同时提供廉价的计算机硬件平台。

2024-11-20 20:32:25 480

原创 一文了解钩子函数(Hook Functions)

钩子函数是一种允许在软件执行过程中插入自定义逻辑的机制。它为开发者提供了一种灵活的方式,在某些特定的生命周期阶段或事件发生时,执行用户定义的代码,而无需直接修改框架或系统的核心逻辑。

2024-11-20 20:27:29 494

原创 一文教会你如何解决Android的ANR问题

ANR(Application Not Responding)是 Android 中的一种常见问题。当应用程序未能在规定时间内响应用户输入、完成后台任务或处理系统消息时,系统会弹出一个对话框,提示“应用无响应”。这通常会严重影响用户体验。

2024-11-20 20:14:59 1310

原创 Android中常见CPU异常使用场景和解决方案

在Android开发中,常见的CPU异常使用场景通常发生在代码逻辑设计或性能优化不当时,这些问题可能导致CPU使用率过高、频繁的性能问题或耗电问题

2024-11-19 22:44:25 561

原创 Android中常见内存泄漏的场景和解决方案

本文讲解Android 开发中常见内存泄漏场景及其解决方案,内容包括代码示例、原因分析以及最佳实践建议。

2024-11-19 22:34:19 860

原创 Android WMS概览

WMS(WindowManagerService)是 Android 系统的核心服务,负责管理应用和系统的窗口,包括窗口的创建、销毁、布局、层级管理、输入事件分发以及动画显示等。它通过协调 InputManager 和 SurfaceFlinger 实现触摸事件处理和窗口渲染,是连接应用界面和底层显示硬件的关键桥梁。

2024-11-18 22:52:46 1220

原创 一文带你系统学习Linux中的eBPF

eBPF(Extended Berkeley Packet Filter)是一个强大的 Linux 内核技术,它最初设计用于高效地过滤网络数据包,但随着功能的扩展,现在成为了内核性能调试、监控、安全审计以及网络流量管理等领域的核心工具。本文将详细介绍 eBPF 的工作原理、应用场景以及技术细节,帮助您深入理解其机制和应用潜力。

2024-11-18 22:25:13 1484

原创 Linux中火焰图和eBPF的关系

eBPF(eBPF, Extended Berkeley Packet Filter)和火焰图的关系在于,eBPF 提供了强大的性能分析和监控能力,而火焰图是将这些分析数据可视化的重要工具。两者结合使用,可以帮助开发者深入分析系统和应用程序的性能瓶颈。

2024-11-18 22:16:28 1062

原创 Linux性能优化之火焰图简介

Linux 火焰图(Flame Graph)是一种可视化工具,用于分析程序性能问题,尤其是 CPU 使用情况。它展示了程序中函数调用的层次结构和各个调用栈占用的时间比例。本文详细介绍,包括火焰图的工作原理、生成步骤和实际使用中的技巧。

2024-11-17 18:11:32 1220

原创 Linux性能优化之火焰图的起源

Linux火焰图的起源与性能优化专家 Brendan Gregg 密切相关,他在 2011 年首次提出这一工具,用于解决性能分析过程中可视化和数据解读的难题。

2024-11-17 18:03:39 1137

原创 Android中的AMS(Activity Manager Service)详解

AMS (Activity Manager Service) 是 Android 系统中非常核心的服务之一,它负责管理应用程序的生命周期、任务栈、进程、广播、服务等功能。AMS 是整个 Android Framework 的调度中心,它的运作直接影响应用的性能和用户体验。

2024-11-17 17:34:21 1492

原创 Android的冷启动流程是咋样的?带你一看究竟!

本文对 Android 应用 冷启动(Cold Start)过程的详细讲解,包括原理、各阶段的源码解析,以及关键的性能优化点。篇幅较长,请耐心阅读。

2024-11-16 19:55:38 1186

原创 Android ART知多少?

Android 虚拟机 ART(Android Runtime)是 Android 平台上的应用程序运行时环境,用于执行应用程序的字节码。ART 自 Android 5.0(Lollipop)开始取代了 Dalvik,成为 Android 的默认运行时环境。

2024-11-15 21:24:18 1806

原创 一文了解Android的核心系统服务

在 Android 系统中,核心系统服务(Core System Services)是应用和系统功能正常运行的基石。它们负责提供系统级的资源和操作支持,包含了从启动设备、管理进程到提供应用基础组件的方方面面。以下是 Android 中一些重要的核心系统服务的深入介绍。

2024-11-14 22:29:12 1297

原创 一文了解Android中的AudioFlinger

AudioFlinger 是 Android 音频系统中的一个关键服务,它运行在系统进程中。主要负责音频的混合(mixing)和输出(output)。其作用是将多个音频流(例如来自不同应用程序的音乐播放、语音通话等音频流)混合成一个单一的音频信号,然后将这个信号发送到音频硬件进行播放。

2024-11-14 22:10:56 1485

原创 一文简单了解Android中的input流程

在 Android 中,输入事件(例如触摸、按键)从硬件传递到应用程序并最终由应用层消费。整个过程涉及多个系统层次,包括硬件层、Linux 内核、Native 层、Framework 层和应用层。我们将深入解析这一流程,并结合代码逐步了解输入事件的传递。

2024-11-13 21:51:55 1364

原创 结合源码讲解下Android中的截图流程

截图是经常使用到的功能。你了解Android手机截图时发生了什么吗?截图的原理是什么?本来带你一探究竟。

2024-11-13 21:36:12 1335

原创 使用OpenGL ES简单实现一个特效

这只是一个简单粗略的模仿。大家可以稍微了解下shader语法,然后再逐行研究下以上源码。可以看到基本的shader操作和图像处理,并没有想象的那么难。

2024-11-13 21:23:42 324

原创 RecyclerView进阶知识讲解

在 Android 开发中,RecyclerView 是一种高效的列表和网格布局控件,用于显示大规模数据。尽管基本使用方法简单,但深入理解并掌握其高级进阶用法能大幅提升用户体验和应用性能。下面,我将从布局管理、动画和手势、自定义缓存、优化性能等方面系统介绍 RecyclerView 的高级用法。

2024-11-12 22:21:17 862

原创 Perfetto中如何使用SQL语句

Perfetto 的 SQL 查询强大且灵活,适合多种性能分析场景。通过这些 SQL 查询,你可以有效地提取和分析 Android Trace 数据中的关键信息,以便诊断和优化性能问题。

2024-11-11 23:04:01 889

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除