The content of this blog mainly focuses on Android development and optimization-related topics, including the use of performance tools, Android App optimization knowledge, Android Framework explanations, and performance theory. Here is an organized directory for your reference. You can choose the parts you are interested in. This directory includes not only blog content but also some of my answers on Zhihu or historical discussions in The Performance, which has closed. This directory lists my original blog posts. Additionally, I have collected some excellent articles in Must-Knows for Android Performance Optimization, which I update periodically.
Articles come first; tools, Apps, and content projects are collected under Personal Projects. See also the AIW introduction and repository.
This directory will be updated with every blog post for easy reference. I will try my best to update weekly. Learning is endless; let’s encourage each other. If there is anything you want to know or if there are any inadequacies in the blog, please leave a message on the blog, Zhihu, Weibo, or WeChat. I will actively correct them.
Theoretical Knowledge
- Techniques, Philosophy, and Tools for Android Performance Optimization
- Historical Introduction to The Performance (Closed)
- The Performance Planet Tea Party - Episode 1
- Performance Design in OS Design
Perfetto Series
Perfetto has become my main tool for everyday Android performance analysis. Readers new to performance work have told me that its busy interface and many features leave them overwhelmed. They asked me to revisit the Systrace articles using Perfetto, so that is what I’m doing in this series.
Tools and versions — updated October 13, 2026: Systrace belongs to the legacy workflow. Android’s System Tracing utility saves Perfetto-format data on Android 10 (API 29) and later; use Perfetto UI and Trace Processor as the primary analysis path. See Android system tracing. Supported legacy Systrace data can also be imported; legacy-viewer availability and compatibility depend on the viewer version. Older thread-state, Vsync, Input, SurfaceFlinger, and Binder articles remain useful learning references, but their functions, timing, and limits must be read against each article’s Android version.
- Android Perfetto Series Index
- Android Perfetto Series 1: Introduction to Perfetto
- Android Perfetto Series 2: Capturing Perfetto Traces
- Android Perfetto Series 3: Getting Familiar with Perfetto View
- Android Perfetto Series 4: Opening Large Traces Locally Using the Command Line
- Android Perfetto Series 5: Android App Rendering Pipeline Based on Choreographer
- Android Perfetto Series 6: Why 120Hz? Advantages and Challenges of High Refresh Rate
- Android Perfetto Series 7 - MainThread and RenderThread Explained
- Android Perfetto Series 8: Deep Dive into Vsync Mechanism and Performance Analysis
- Android Perfetto Series 9 - CPU Information Explained
- Android Perfetto Series 10: Binder Scheduling and Lock Contention
- Android Perfetto Series 11: PerfettoSQL, Trace Processor and Regression Detection
- Android Perfetto Series 12: Trace Dataflow and Data Loss
- Android Perfetto Series 13: Perfetto SDK, Track Event and App Field Traces
- Android Perfetto Series 14: heapprofd and Memory Profiling
- Android Perfetto Series 15: Boot Traces and Long-running Field Tracing
- Android Perfetto Series 16: GPU, Power Counters and Hardware Bottlenecks
- Android Perfetto Series 17: Scenario Automation and Platform Tracing
- Android Perfetto Series 18: Input Response Latency
- Video (Bilibili) - Android Perfetto Basics and Case Studies
- Video (Bilibili) - Android Perfetto: Trace Graph Types - AOSP, WebView, Flutter + OEM System Optimization
Systrace Series
The Systrace tool is a powerful tool for analyzing Android performance issues. It can show the operation of the entire machine from a graphical perspective. The Systrace tool can not only analyze performance issues but is also excellent for learning the Framework, which is one reason I wrote this series.
If you start from this series today, use this mapping to move to the current Perfetto workflow:
| Systrace article direction | Perfetto reading path |
|---|---|
| Tool introduction, capture flow, UI operations | Perfetto introduction / Capturing Perfetto traces / Perfetto View |
| Why 60 fps and high refresh rate | Why 120Hz? |
| Choreographer, MainThread, RenderThread, jank analysis | Choreographer rendering flow / MainThread and RenderThread |
| Vsync, SurfaceFlinger, Triple Buffer | Vsync and performance analysis |
| CPU, Runnable, Running, Sleep | CPU information |
| Binder, lock contention, SystemServer waits | Binder scheduling and lock contention |
- Introduction to Systrace
- Systrace Basics - Prerequisites for Systrace
- Systrace Basics - Why 60 fps?
- Android Systrace Basics - SystemServer Explained
- Systrace Basics - Input Explained
- Systrace Basics - Vsync Mechanism Explained
- Systrace Basics - Vsync-App: Detailed Explanation of Choreographer-Based Rendering Mechanism
- Systrace Basics - MainThread and RenderThread Explained
- Systrace Basics - Binder and Lock Contention Explained
- Systrace Basics - Triple Buffer Explained
- Systrace Basics - CPU Info Explained
- Systrace Basics - SurfaceFlinger Explained
- Systrace Smoothness in Action 1: Understanding Jank Principles
- Systrace Smoothness in Action 2: Case Analysis - MIUI Launcher Scroll Jank Analysis
- Systrace Smoothness in Action 3: FAQs During Jank Analysis
- Systrace Responsiveness in Action 1: Understanding Responsiveness Principles
- Systrace Responsiveness in Action 2: Responsiveness Analysis - Using App Startup as an Example
- Systrace Responsiveness in Action 3: Extended Knowledge on Responsiveness
- Systrace Thread CPU State Analysis Tips - Runnable
- Systrace Thread CPU State Analysis Tips - Running
- Systrace Thread CPU State Analysis Tips - Sleep and Uninterruptible Sleep
Smoothness
Smoothness refers to jank and dropped frames, often discussed as Smooth vs Jank.
- Overview of Jank and Dropped Frames in Android - Methodology
- Overview of Jank and Dropped Frames in Android - System Edition
- Overview of Jank and Dropped Frames in Android - App Edition
- Overview of Jank and Dropped Frames in Android - Low Memory Edition
- Reflections on Android System Smoothness
- A New Experience of Smoothness: Talking About 90Hz
- Android Performance Optimization - Overdraw (Part 1)
- Android Performance Optimization - Overdraw (Part 2)
- Follow-up on Android Performance Optimization
- Why Is the Weibo Experience Better on Huawei? A Technical Analysis and Reflection
Responsiveness
Responsiveness mainly refers to App cold, warm, and hot startup, interface navigation speed, screen on/off speed, etc., often discussed as Fast vs Slow.
- A Full Record of Android App Launch Optimization
- Zhihu: Save Your StartingWindow
- How to Calculate App Launch Time in Android?
- Android App Launch Optimization: Implementation and Principle of DelayLoad (Part 1)
- Android App Launch Optimization: Implementation and Principle of DelayLoad (Part 2)
ANR
Articles related to Android ANR.
- Android App ANR Series 1: Deep Dive into Android ANR Mechanism
- Android App ANR Series 2: ANR Analysis Methodology and Key Logs
- Android App ANR Series 3: ANR Case Studies
Memory
Articles related to Android memory optimization and its impact on the system.
- Impact of Low Memory on Performance in Android
- Does the Android System Not Release Memory?
- Memory Optimization Suggestions for Android Code - Resources
- Memory Optimization Suggestions for Android Code - Official Android Guide
- Memory Optimization Suggestions for Android Code - Official Java Guide
- Android Memory Optimization (1): Introduction to MAT
- Android Memory Optimization (2): Advanced MAT Usage
- Android Memory Optimization (3): Viewing Original Bitmap Images in MAT
Framework Knowledge
Framework-related content, including operating principles, problem-solving ideas, and optimization methods.
- With System Permissions, Can an App Really Do Whatever It Wants?
- Analyzing “Invalid Background Animation” Behavior in Android
- Android Framework Case Study: Who Killed the Launcher?
- Detailed Explanation of Activity Launch Modes in Android
- Detailed Explanation of Hardware Layer in Android
- Case Study: System-Wide Lag Caused by Android Accessibility Services
- RenderThread Workflow in Android hwui
- HashMap Source Code Analysis
- Detailed Explanation of Java Singleton Pattern
- Setting Up a Source Code Environment for Android System Development
- Analysis of Chain Wakeups in Android Apps
- An Incident Caused by a “Leap” Month - Analysis of Samsung System Reboots
- Android System Development (1): Downloading, Compiling, and Flashing Android 12 Source Code
App Development
Early App development articles. APIs, permissions, and tools have changed; read the version notes and replacement guidance before using an example.
- Android Bottom Navigation Specification 1: Usage
- Android Bottom Navigation Specification 2: Styles, Behaviors, and Specs
- Android Service: Developing Your Own Notification Center (1): Introduction to Accessibility Services
- Android Service: Developing Your Own Notification Center (2): Practical Accessibility Services
- Android Development: Log2File Utility
- Android: Ubuntu Fails to Find Devices for Adb Commands
- Android Tip: How to Prevent EditText from Automatically Gaining Focus
Personal Summary and Recommendations
Not related to technology, but can improve happiness and work efficiency.
- Reflections on 2023: Health, Career, and the Future
- 2021 Year in Review: Baby, Career, and Growth
- Gracker’s Sharp Tools
- Gracker’s Top Recommendations of 2018 - A Reward for Hard Work
- How Do Engineers Become Excellent?
- Top Recommendations of 2017 - A Reward for Hard Work
- Reflections on Work and Growth (2017)
- Android Developer Learning Path (2020 Edition)
- My 2020 Reading List
Reading Notes
- What Should Be in a Book About Android Smoothness?
- The Programmer’s Apprenticeship - 01: The Art of Fighting Back
- The Programmer’s Apprenticeship - 02: The Way of Programming
- The Programmer’s Apprenticeship - 03: Web Design Principles
- The Programmer’s Apprenticeship - 04: Reflections on Testing
- The Programmer’s Apprenticeship - 05: Know Your Users
- The Programmer’s Apprenticeship - 06: All About the Internet
- The Programmer’s Apprenticeship - 07: Games and Programming
- The Programmer’s Apprenticeship - 08: The Beauty of Reading
Performance Optimization Patterns and Tips
Performance Optimization Patterns is an early Google video series about performance. I originally wanted to write an article for every episode, but later realized that wasn’t realistic. Android Tips are translations from another blogger. These remain historical material; see each article for platform limits and updated approaches.
- Overview of Android Performance Patterns
- Android Performance Patterns - Render Performance
- Android Performance Patterns - Understanding Overdraw
- Android Performance Patterns - Understanding VSYNC
- Android Performance Patterns - Profile GPU Rendering
- Android Tips 1
- Android Tips 2
- Android Tips 3
- Android Tips 4
- Android Tips 5
Zhihu Q&A
Some articles are from Zhihu columns. Here are some top-voted answers.
- Personal Zhihu Homepage
- Why Are Two Large Cores Locked When Running Honor of Kings on Some Xiaomi Models?
- Why Is Flyme 5 So Much Smoother Than Flyme 4? What Is the Fundamental Change?
- Does the Android System Not Release Memory?
- Is Understanding the Android Framework Layer Helpful for Work?
- What Do You Think of the Samsung System Crashes on May 23?
Android Weekly
- Juejin Column: Android Weekly
- Zhihu Column: Android Weekly
Android Weekly is available in Chinese through the Juejin and Zhihu columns linked above.
Personal Projects
My tools, Apps, automation, and content projects are collected here. The original What I Am Building remains available. Public-project descriptions were updated on October 13, 2026; source branches, published artifacts, and device compatibility are separate concerns documented by each project.
Android Performance Ecosystem
Android Performance Ecosystem connects a navigation hub and seven independent projects. They can be used separately; this is an optional workflow, not a mandatory dependency chain.
| Stage | Project | Purpose |
|---|---|---|
| Navigate | Ecosystem Hub | Project map, handoff metadata, and navigation drift checks. |
| Instrument | TraceFix | Add App-side Trace sections during the build. |
| Capture | Perfetto Tools | Perfetto capture, FPS measurements, and Simpleperf workflows. |
| Analyze | SmartPerfetto | AI-assisted Web/CLI investigation, evidence, and reports. |
| Agent analysis | Perfetto Skills | Portable Android, Linux, and Chromium analysis workflows. |
| Learn | Android Performance Blog | Mechanisms and cases; deployment repository. |
| System knowledge | Android Internals Wiki | An alpha knowledge base spanning App, Framework, Native, and Kernel. |
| Reproduce | SystraceForBlog | Article trace files and case materials. |
Use TraceFix when platform tracks need more App detail, Perfetto Tools for capture, and SmartPerfetto or Perfetto Skills for analysis. The blog and AIW explain mechanisms; SystraceForBlog supplies historical case files.
Main Directions
- Android performance and stability: Framework, APM, Perfetto, Systrace, startup, jank, ANR, memory, and power.
- Trace-analysis tools: reusable scripts, Skills, and investigation workflows.
- AI agents and personal automation: research, daily notes, knowledge bases, writing, and engineering collaboration.
- Personal iOS/Android Apps built around practical needs.
- Technical writing through this blog, Android Weekly, AI Field Notes, and public Skills.
Public Projects
Android Internals Wiki (AIW)
Android Internals Wiki contains Android Internals: System Architecture, Performance & Tooling in Practice. Its five parts and 26 chapters cover system mechanisms, performance, tools, platform/OEM work, and App practices. The current README names Android 17 / API 37 as its baseline; device behavior still requires version-specific checks. The full text is currently Chinese, with an English navigation summary.
- Open-source introduction.
- Web edition and complete contents.
- EPUB releases.
- Contributing: include the Android version, source location, and reproducible observation when reporting an error.
SmartPerfetto
SmartPerfetto was the open-source project I was spending the most time on when I put this list together. It adds an AI Assistant to Perfetto. Questions about a loaded trace lead to evidence gathered through trace_processor_shell, SQL, YAML Skills, and scenario strategies. Results remain limited by the captured data; AI interpretation does not replace source inspection, queries, or reproduction.
- Perfetto UI fork hosting the Assistant integration.
- A TypeScript backend for agent execution, tools, Skills, reports, and streaming output.
- YAML Skills and Markdown strategies for startup, scrolling, ANR, Binder, CPU, memory, and rendering.
- SmartPerfetto Update Log: version dates and main changes in one post.
- Introduction, architecture, and architecture Q&A.
Android App Memory Analysis
Android-App-Memory-Analysis brings dumpsys meminfo, dumpsys gfxinfo, HPROF, and smaps into a common investigation.
- Collect available data from connected devices. HPROF/smaps access depends on debuggability, permissions, and device policy.
- Correlate Java heap, native, graphics, and process-level evidence, with readable reports.
- The current README describes Android 17 / API 37 Demo and input-format adaptation, alongside Android 16 and 16 KB page-size notes. A build target or parser claim does not prove validation on every device.
TraceFix
TraceFix inserts paired android.os.Trace.beginSection/endSection calls into App bytecode at build time, reducing manual instrumentation work. Instrumentation also has a cost; bound its scope and compare equivalent runs.
As of October 13, 2026, Maven Central metadata and the POM confirm io.github.gracker:TraceFix:0.1.0. The repository README describes 0.2.x for Android 17 / AGP 9.1.x, but the 0.2.0 POM is not available at that repository endpoint. Distinguish source-branch documentation from published dependencies.
Perfetto Auto-Pin
Perfetto-AutoPin-For-Chrome pins frequently used tracks through presets such as Frame, Startup, Input, Memory, Binder, SurfaceFlinger, SystemUI, and CPU analysis, with custom track sets.
It relies on Perfetto UI internals, so compatibility can change with UI versions. Perfetto’s own commands and macros offer another way to reduce repeated track setup.
High Performance Friends Circle
Friends-Circle-Demo-Apks-For-Power-and-Performance-Test is a Moments-style Android workload suite for startup, scrolling, and App switching. Different UI implementations and loads support investigation of main/RenderThread work, SurfaceFlinger, CPU, frames, and power. A Flutter suite provides related workloads.
Systrace / Perfetto Utilities and Historical Demos
These projects retain older examples and tools. Build environments, private interfaces, and device permissions need their own checks before use on current Android.
- SystraceForBlog: article traces and case materials.
- SystraceAnalysis: legacy Systrace/ftrace analysis.
- android_cpu_usage_calculation: CPU-usage calculation scripts.
- FPSDump: an older system-permission/private-SurfaceFlinger-interface demo, not a universal current App-FPS meter.
- GameBench: historical game-performance server/client tooling.
- Android-FPS-Calculation: an FPS calculation demo.
- Android_HardwareLayer_Example: hardware-layer animation examples.
- DelayLoadSample: the startup DelayLoad article’s sample.
- ListHeaderAnimationPerformance: list-header animation experiments.
- AndroidLunchModeTest: launch-mode examples.
- AndroidUML: Android diagrams written with PlantUML.
Historical Android / Java Projects
- Cats: a personal App/practice project.
- Girls: a Gank client built for practice.
- Flutter-Gank: Flutter practice.
- FriendsCircle_Flutter_Demo: a Flutter Moments demo.
- SlideDelete-ListView: swipe-to-delete ListView example.
- Android-NumberLimitEditText: input-length-limit feedback.
- SystemMonitor: an Android monitoring example.
- JavaReflect: Java reflection examples.
- AndroidInterview-PrintAllViews: View-tree printing exercises.
- MemoryAnalysisTools: an older Meizu-device memory tool.
- Fragment-NetEase: an archived Fragment example.
Resources, Sites, and Translations
- awesome-android-ai-dev-sources: developers, blogs, and technical sources I follow.
- Gracker.github.io: the blog’s deployment repository.
- hexo-theme-reading: an older Hexo theme.
- claude-code-from-source-zh-cn: a Simplified Chinese translation of Claude Code from Source.
The GitHub profile has the full public repository list; this directory selects projects related to the blog and my longer-term work.
SmartProtobuf
SmartProtobuf is a Protobuf/trace-data-structure project. Its public repository and usage documentation will be linked when that information is ready; no unstable public entrypoint is listed here.
AI and Automation Projects
OpenClaw
OpenClaw has been part of my local automation practice, connecting Telegram, Obsidian, scheduled jobs, models, and engineering tools for research, knowledge management, notes, and collaboration.
AI Field Notes
awesome-ai-field-notes is an AI information directory. Its documented site, godofgpt.com, could not be reached during the October 13, 2026 check; use the GitHub repository for the material. Its documented OpenClaw pipeline collects, deduplicates, categorizes, scores, translates, and generates pages about models, agents, coding, infrastructure, and research. It is a long-term information archive and an example of my automation work.
Gracker Skills
I’ve turned some of my regular writing, research, and diagram workflows into public Skills:
- gracker-writing: technical articles, retrospectives, FAQs, methods, and long-form writing.
- gracker-deep-research-skill: local discovery, evidence collection, and offline drafting.
- gracker-diagrams-skill: technical diagrams and infographics. It prepares prompt packs by default; rendering requires drawing capabilities in the host environment.
Open Design
Open Design is a design-tool project I previously forked and helped maintain, exploring local coding agents, design systems, Skills, export, and preview in one workflow. Its former public repository was unavailable on October 13, 2026, so no installation link is currently provided here.
Apps in Development
100Years
100Years is an iPhone / Apple Watch App for health trends and long-term health signals. It combines HealthKit, lifestyle, health records, workouts, and sleep data. Deterministic models produce estimates, with optional AI explanations. Lifespan, age-100, and healthy-lifespan outputs are product estimates without external clinical calibration, not personal survival probabilities or medical conclusions.
The source is not publicly linked here. Work continues on data import, health-data synchronization, SwiftUI, localization, and release readiness; this description does not establish a public release.
iBattery
iBattery is a cycling-device battery monitor for iOS, covering compatible Bluetooth sports devices such as power meters, heart-rate sensors, shifting systems, and cadence sensors.
- Discovers and classifies nearby devices.
- Updates battery state and alerts when the device exposes readable battery data; discovery alone does not guarantee access.
- Shows recent readings in iOS Widgets. Widget refresh is not continuous Bluetooth sampling; reading age matters.
- Includes localization, caching, notifications, and appearance settings.
The iOS repository is not publicly linked here; an Android version is also a local development direction.
Juju
Juju is an Android growth journal I’m making for my family, for recording a child’s age, milestones, and photos, with home-screen widgets. It is not presented as a public open-source release.
Content Projects
Android Performance Blog
AndroidPerformance.com is my longest-running public content project. It covers Perfetto, Systrace, system mechanisms, smoothness, responsiveness, ANR, memory, Framework, and App development, alongside reading notes and personal writing. This article directory is the main navigation page.
Android Weekly
Android Weekly is a free Chinese technical newsletter covering Android, Linux, iOS, Flutter, performance, and engineering tools.
Personal Page
Below is my personal introduction and related links. I look forward to exchanging ideas with fellow professionals. “When three walk together, one can always be my teacher!”
- Personal Blog: Where I write
- Blogger Intro: Includes personal WeChat and WeChat group links.
- Curated Performance Articles: Welcome to recommend projects/articles.
- The Performance archive: Historical introduction; the community closed in 2026 and no longer accepts members.
- WeChat Official Account

- Zhihu: https://www.zhihu.com/people/gracker
- Email Subscription: https://androidweekly.zhubai.love/
- Juejin: https://juejin.cn/user/1816846860560749
Presentations and Training PPTs
This section will be released after some organization. As you know, PPTs don’t contain too much detail, mostly just an outline.
- Video (Bilibili) - Android Perfetto Basics and Case Studies
- Video (Bilibili) - Android Perfetto: Trace Graph Types - AOSP, WebView, Flutter + OEM System Optimization
Knowledge Planet
The Performance closed in 2026 and no longer accepts new members. Its performance foundations, tooling guides, and case studies will gradually be organized into the blog and Android Internals Wiki.