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 the Knowledge Planet - The Performance. 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.
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
- Introduction to The Performance Knowledge Planet
- The Performance Planet Tea Party - Episode 1
- Performance Design in OS Design
Perfetto Series
As Google announced the discontinuation of the Systrace tool and introduced Perfetto, Perfetto has basically replaced Systrace in my daily work. At the same time, major manufacturers like Oppo and Vivo have also switched from Systrace to Perfetto. Many developers new to Android performance optimization find Perfetto’s dazzling interface and complex functions overwhelming. I hope to present those previous Systrace articles using Perfetto.
Note: Perfetto and Systrace can be converted to each other, so use whichever is more convenient:
- Both Perfetto Trace and Systrace can be opened at https://ui.perfetto.dev/
- After opening a Perfetto Trace at https://ui.perfetto.dev/, you can click the toolbar: Convert trace -> Switch to legacy UI to open it in the legacy systrace interface.
- 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
- Video (Bilibili) - Android Perfetto Basics and Case Studies
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.
Note: Perfetto and Systrace can be converted to each other, so use whichever is more convenient:
- Both Perfetto Trace and Systrace can be opened at https://ui.perfetto.dev/
- After opening a Perfetto Trace at https://ui.perfetto.dev/, you can click the toolbar: Convert trace -> Switch to legacy UI to open it in the legacy systrace interface.
- 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
- Android Systrace Basics - SystemServer 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 and warm start, 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
- Understanding Android App States from a User Perspective
- 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
Articles related to App development. Since they were written early, you can just take a quick look.
- 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 a series of short videos by Google (6 seasons). I originally wanted to accompany each with an article. Android Tips are translations from another blogger.
- 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 Articles:
- Android Weekly Issue 2025-01
- Android Weekly Issue 2025-02
- Android Weekly Issue 2025-03
- Android Weekly Issue 2025-04
- Android Weekly Issue 2025-05
- Android Weekly Issue 2025-06
- Android Weekly Issue 2025-07
- Android Weekly Issue 2025-08
- Android Weekly Issue 2025-09
- Android Weekly Issue 2025-10
- Android Weekly Issue 2025-11
- Android Weekly Issue 2025-12
- Android Weekly Issue 2025-13
- Android Weekly Issue 2025-14
- Android Weekly Issue 2025-15
- Android Weekly Issue 2025-16
- Android Weekly Issue 2025-17
- Android Weekly Issue 2025-18
- Android Weekly Issue 2025-19
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.
- Android Performance Knowledge Planet: Welcome to join and thank you for your support~
- 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.
Knowledge Planet
The Knowledge Planet is named The Performance, a community for sharing performance optimization-related knowledge in the Android development field. The moderator is the blogger himself, a senior developer in performance optimization at a top-tier domestic mobile phone manufacturer. He has years of accumulated knowledge and experience in performance-related fields and can provide one-stop services for performance and power analysis knowledge, covering basics, methodology, tool usage, and the most valuable case studies.