This article records the essential knowledge for Android performance optimization (mainly including outstanding articles, WeChat accounts, blogs, and technical teams), covering all aspects of performance optimization. This post will be continuously updated; personal recommendations are welcome.
Having worked on performance for a long time and touched many modules, I must say that doing a good job in performance isn’t easy. Why? Because the amount of knowledge required is immense. Android is a complex system; a single change can affect everything. You can’t excel by only knowing one module.
In my learning journey, besides reading source code, I’ve encountered a wealth of knowledge online. Many seniors have shared their insights and experiences, helping me avoid many pitfalls. I’ve saved many excellent technical articles and documents in my notes. Now, I’ve decided to share them online so that anyone wishing to enter the field of Android system development and optimization can get started quickly by reading this article. It also serves as a way for me to organize my knowledge and pursue lifelong learning.
This article lists the must-know skills and tools for Android performance optimization (if you have your own favorites, feel free to suggest them). Some articles may require specific access methods. Additionally, here is the Android Developer Learning Path (2020 Edition).
This article is updated regularly. Latest update: 2022-06-27.
Optimization Experience and Insights
- Douyin Android Performance Optimization Series: Startup Optimization Practices
- Series Videos Android Performance Patterns
- Accelerating Apps: Android Performance Optimization Summary
- Hertz: A Mobile Performance Monitoring Solution
- Android Performance Optimization Follow-up
- Android VM Performance Tuning
- Android UI Performance Optimization
- Performance Tips
- Meituan Waimai: Android Lint Code Check Practices
- Android battery and memory optimizations - Google I/O 2016
- Google Free Public Course: Android Performance
- Thoughts on Android App Performance Optimization
- Memory Leak Analysis with Android Studio and MAT
- Full-link Performance Optimization of Mobile Taobao (Part 1)
- Full-link Performance Optimization of Mobile Taobao (Part 2)
- Android Development Master Course (Geek Time)
- Mobile QQ Android Cache Monitoring and Optimization
- WeChat Reading (Android) Engine Jitter Monitoring and Testing
- Data science for mobile OS system optimization
- Matrix TraceCanary: Stutter Monitoring
- Matrix IOCanary: I/O Quality Monitoring
- Polishing Google Photos Web UI
- WeChat Android Memory Optimization Practices
- Alipay Architecture: G.C. Optimization for App Launch
- Douyin BoostMultiDex: Reducing Cold Start Time by 80% on Low Android Versions
- Douyin APK Size Optimization: Resources
- Performance Terminator “Olympic”
- Meituan Java Thread Pool Implementation and Practices
- Probe: An Online OOM Diagnostic Component
- Optimization Practice: Stutter in Lists at High Refresh Rates
- iOS High Refresh Rate Monitoring + Optimization: A Comprehensive Analysis from Theory to Practice
- Large Image Monitoring via ASM
- Native Memory Leak in Android S Source Code
- Can you trust time measurements in Profiler?
- Observability Architecture and Key Technologies for Mobile
Responsiveness (Startup)
- Full Analysis of Android App Startup Process (Source Code Deep Dive)
- Android App Launch Optimization Record
- Optimizing Boot Times
- How to Calculate App Startup Time in Android
- Google Official Documentation - Launch-time performance
- Android Cold Start Optimization: New Tricks Beyond the Usual Three
- Alipay App Build Optimization: Improving Android Startup via Installation Package Rearrangement
- Cold Start Optimization: Exploring Redex and Interdex
- Android Performance Optimization Notes (1): Startup Optimization
- Douyin R&D: Improving App Start Speed over 15% via Binary File Rearrangement
- iQIYI Android Client Startup Optimization and Analysis
- In-depth Exploration of Android Startup Speed Optimization
- Douyin Android Performance Optimization Series: Startup Optimization Theory and Tools
- APM Page Load Time Calibration
- Improving App Performance with Baseline Profiles
Smoothness (Jank)
- Overview of Jank and Dropped Frames in Android - Methodology
- Overview of Jank and Dropped Frames in Android - System Side
- Overview of Jank and Dropped Frames in Android - App Side
- Analysis of Android Jank and Dropped Frames: Principles
- Analysis of Android Jank and Dropped Frames: Tools
- Analysis of Android Jank and Dropped Frames: Practice
- Analysis of Global Jank Caused by Accessibility Services in Yingyongbao and Xunfei Input
- Evaluating Performance
- Understanding Systrace
- Using ftrace
- Identifying Capacity-Related Jank
- Identifying Jitter-Related Jank
- Display Performance Metrics We Have Used
- Slow rendering
- Brief Analysis of Android Smoothness Detection Principles
- Analysis of Android JankTracker Principles
- Android UI Performance Tuning Handbook
- App Smoothness Optimization: A Tool for Quickly Identifying Time-Consuming Methods via Bytecode Instrumentation
- Perhaps the First Article Explaining FPS Calculation Principles
- Explanations of Jank and Stutter Rate
- Everything You Need to Know About Live Stream Stutter Optimization
Memory
- Douyin Android Performance Optimization Series: NativeBitmap Solution for Java OOM
- Saving OOM! Bytedance’s Self-developed Android VM Memory Management Optimization: mSponge
- Douyin Android Performance Optimization Series: Java Memory Optimization
- Analysis of Android Camera Memory Issues
- Analysis of a Massive JVM Native Memory Leak (64M Issue)
- Android Native | GWP-ASan: A Sampling-based Memory Debugging Tool
- Android Native | MTE: The Ultimate Weapon for Memory Issues
- Impact of Low Memory on Performance in Android
- Low RAM Configuration
- Detailed Explanation of Linux Swap and Zram
- Relationship Between Loading Different DPI Resources and Memory Consumption in Android
- Explanation of ZRAM SWAP Memory
- Analysis of Android OOM Cases
- Android Code Memory Optimization Suggestions: Resources
- Android Code Memory Optimization Suggestions: Google Official
- Android Code Memory Optimization Suggestions: Java Official
- Android Memory Optimization (1): Introduction to MAT
- Android Memory Optimization (2): Advanced MAT Usage
- Android Memory Optimization (3): Viewing Bitmap Images in MAT
- Android Code Memory Optimization Suggestions: OnTrimMemory
- Analysis of Android LowMemoryKiller Principles
- Principles of Android Anonymous Shared Memory (Ashmem)
- Hao Jian: Linux Memory Management Study Notes - Lecture 1
- Hao Jian: Linux Memory Management Study Notes - Lecture 2
- Hao Jian: Linux Memory Management Study Notes - Lecture 3
- Hao Jian: Linux Memory Management Study Notes - Lecture 4
- Hao Jian: Linux Memory Management Study Notes - Lecture 5
- Hao Jian: Linux Memory Management Study Notes - Lecture 6
- Manage your app’s memory
- Overview of memory management
- Summary of Checking Process Memory Consumption in Linux
- Tracing Native Heap Memory Leaks on the Android Platform
- Brief Discussion on Cache Memory
- Detailed Discussion on Bitmap Optimization
- Exploring Android Memory Optimization Methods
- Solve 90% of App Memory Abnormalities with This Article
- Practicing App Memory Optimization: Orderly Analysis and Optimization
- Talking About Memory Compression
- Principles and Applications of dumpsys meminfo
- Binder | Essence and Evolution of Memory Copying
- Memory Optimization: Texture Compression Techniques
- Using Perfetto to Analyze Android Native Physical Memory Leaks
- Using Android Profiler to Analyze Android Native Physical Memory Leaks
- Dynamic App Memory Detection via Android JVMTI
- ThreadLocal Source Code Analysis and Potential Memory Leak Issues
- Can Activities Be Reclaimed Even If the App Is in the Foreground?
Graphics Stack
- Android 12(S) Graphics System - Introduction
- Android 12(S) Graphics System - Basic Concepts (1)
- Android 12(S) Graphics System - Sample Apps (2)
- Android 12(S) Graphics System - Communication Between App and SurfaceFlinger (3)
- Android 12(S) Graphics System - SurfaceFlinger Startup and Message Queue (4)
- Android 12(S) Graphics System - createSurface Flow (5)
- Android 12(S) Graphics System - Intro to BufferQueue/BLASTBufferQueue (6)
- Android 12(S) Graphics System - Common Classes (7)
- Android Display Pipeline and Process Scheduling
- Detailed Explanation of Hardware Layer in Android
- Introduction to Hardware Acceleration Principles and Implementation in Android
- Overview of Android Graphics System
- Choreographer Principles
- SurfaceFlinger Startup
- SurfaceFlinger Drawing
- Brief Intro and Study Plan for Android App UI Hardware Acceleration
- Initialization Process of Android App UI Hardware Acceleration
- Asset Atlas Service in Android App UI Hardware Acceleration
- Display List Construction in Android App UI Hardware Acceleration
- Display List Rendering in Android App UI Hardware Acceleration
- Animation Execution in Android App UI Hardware Acceleration
- Android Hardware Acceleration (1): A Simple Explanation of Principles
- Android Hardware Acceleration (2): RenderThread and OpenGL GPU Rendering
- GraphicBuffer Sync Mechanism in Android: Fence
- Android P Graphics System (1): Hardware Compositor HWC2
- Android P Graphics System (2): GraphicBuffer and Gralloc Analysis
- Android P Graphics System (3): Android HWUI Rendering Flow
- Android P Graphics System (4): Android VirtualDisplay Analysis
- Android P Graphics System (5): Interaction Between Client and SurfaceFlinger
- Android P Graphics System (6): SurfaceFlinger Composition (1)
- Android P Graphics System (7): SurfaceFlinger Composition (2)
- Android P Graphics System (8): SurfaceFlinger Composition (3)
- Android P Graphics System (9): Overview of Android Graphics Output
- Android P Graphics System (10): BufferQueue (1)
- Android P Graphics System (11): BufferQueue (2)
- Android P Graphics System (12): BufferQueue (3)
- Rasterization in Rendering Pipeline (1)
- Rasterization in Rendering Pipeline (2)
Virtual Machine (ART/Dalvik)
- ART VM | GC Trigger Timing and Conditions
- ART VM | Large Object Space
- ART VM | Intermediate Links in JNI Calls
- ART VM | Finalize’s Replacement Cleaner
- ART VM | Making GC Synchronously Reclaim Native Memory
- ART VM | Memory Structure of Java Objects and Classes
- ART VM | Static vs. Dynamic JNI Registration
- ART VM | Locks
- ART VM | SIGSEGV Signal Handling Flow in Android Apps
- Third Perspective: An ART GC Optimization Story
- Analysis of Background App Crashes Due to GC Timeout
- Understanding ART in Android 10 (Part 1)
- Understanding ART in Android 10 (Part 2)
- Understanding ART in Android 10 (Part 3)
- Understanding ART in Android 10 (Part 4)
- Understanding ART in Android 10 (Part 5)
- ART and Dalvik
- Android 8.0 ART Improvements
- Dalvik bytecode
- Dalvik Executable format
- Dalvik Executable instruction formats
- Constraints
- Configuring ART
- Debugging ART Garbage Collection
- Implementing ART Just-In-Time (JIT) Compiler
- Deep Learning Android: VM & Runtime
- Android Performance Optimization: VM Tuning
- Dalvik VM on Android
- ART VM on Android
- Android ART Concurrent Copying GC
- Brief Analysis of Android ART dex2oat
System Framework
- Android Screen Display Process Analysis (1)
- Android Screen Display Process Analysis (2)
- Android Screen Display Process Analysis (3)
- Android Screen Display Process Analysis (4)
- Android Screen Display Process Analysis (5)
- Task Snapshots
- Android Input Subsystem: Creation of Input Process, Startup of Listening Thread
- Android Input Subsystem: Generation, Reading, and Dispatch of Input Events, InputReader, InputDispatcher
- EventHub and Interaction with Devices, Input Events
- Android Message Mechanism: Analysis from Java Layer to Native Layer
- Understanding Android Binder Mechanism (1/3): Driver Chapter
- Understanding Android Binder Mechanism (2/3): C++ Layer
- Understanding Android Binder Mechanism (3/3): Java Layer
- Android Binder Design and Implementation - Design Chapter
- Overview of the Four Major Components
- The Four Major Components: ActivityRecord
- The Four Major Components: ContentProviderRecord
- The Four Major Components: BroadcastRecord
- The Four Major Components: ServiceRecord
- Brief Introduction to the Relationship Between Activity and Window
- Understanding Android Context
- Understanding the Application Creation Process
- Viewing startActivity from a Window Perspective
- WMS—Starting Window
- WMS—Startup Process
- Analysis of Binder Principles for Android Application Engineers
- Binder Series—Introduction
- Binder Series 1—First Look at Binder Driver
- Binder Series 2—Second Look at Binder Driver
- Binder Series 3—Starting ServiceManager
- Binder Series 4—Getting ServiceManager
- Binder Series 5—Registering Service (addService)
- Binder Series 6—Getting Service (getService)
- Binder Series 7—Framework Layer Analysis
- Binder Series 8—How to Use Binder
- Binder Series 9—How to Use AIDL
- Binder Series 10—Summary
- Thorough Understanding of Android Binder Communication Architecture
- Binder Learning Guide
- Do you know Android’s MessageQueue.IdleHandler?
- Let’s Talk About Android’s Message Mechanism
- Talking About APK (Part 1) —— The Black Magic of Directly Running Dex Files
- Talking About APK (Part 2) —— Dex Hotfix and Classpath
- Talking About APK (Part 3) —— The Secret of Android Resource Compilation
- Lu Banshan - Reflection | Design and Implementation of Android Event Interception Mechanism
- Lu Banshan - The Essence and Evolution of Binder Memory Copying
- Lu Banshan - The Essence of inout in AIDL
- Lu Banshan - Binder’s Exception Mechanism
- Lu Banshan - Proxy Mechanism in the Binder World (Part 1)
- Lu Banshan - Binder Overview
- Lu Banshan - Binder | Object Lifecycle
- Lu Banshan - Binder | Proxy Object Leaks and Their Detection
- Android System Architecture —— Choreographer’s Working Mechanism
- Looper’s Wake Mechanism Upgrade
- Android 10.0 Binder Communication Principle (1) Binder, HwBinder, VndBinder Overview
- Android 10.0 Binder Communication Principle (2) - Binder Introduction
- Android 10.0 Binder Communication Principle (3) - ServiceManager Chapter
- Android 10.0 Binder Communication Principle (4) - Native-C\C++ Example Analysis
- Android 10.0 Binder Communication Principle (5) - Binder Driver Analysis
- Android 10.0 Binder Communication Principle (6) - How Binder Data Achieves Targeted Delivery
- Android 10.0 Binder Communication Principle (7) - Framework Binder Example
- Android 10.0 Binder Communication Principle (8) - Framework Layer Analysis
- Android 10.0 Binder Communication Principle (9) - AIDL Binder Example
- Android 10.0 Binder Communication Principle (10) - AIDL Principle Analysis - Proxy-Stub Design Pattern
- Android Framework | A New Application Startup Mechanism: USAP
- Android Inter-process Communication: Illustrated Explanation of Binder Mechanism Principles
- Android Native – Message/Handler/Looper Mechanism (Principle Chapter)
- Android Native – Message/Handler/Looper Mechanism (Application Chapter)
- Android P/Q/R/S 9/10/11/12 Multi-task Gesture Animation OtherActivityInputConsumer Situation
- Android Splash Screen
Stability (Crash/ANR)
- Android ANR|Principle Analysis and Common Cases
- Thorough Understanding of Android Application Not Responding Mechanism
- Application and System Stability Part 1 — General Routine for ANR Problem Analysis
- Application and System Stability Part 2 — ANR Monitoring and Information Collection
- Application and System Stability Part 3 — Discussion on FD Leakage Issues
- Application and System Stability Part 4 — Analysis of Null Pointer Issues Caused by Single Thread
- Application and System Stability Part 5 — Watchdog Principles and Problem Analysis
- Application and System Stability Part 6 — Analysis of JVM Garbage Collection finalize Execution Causing Timed Out Crash
- Application and System Stability Part 7 — Solving NDK Difficult Crashes in Advance with Asan
- Process Names and Thread Names in Android
- Android Runtime | Trace File Generation Mechanism
- Discussion | Special Handling of Main Thread for FP-based Stack Backtrace
- Android Resource Overflow Crash Easily Solved
- ByteDance Android Native Crash Governance: Memory Corruption Tool Principles and Practice
- Xigua Video Stability Governance System Construction 1: Tailor Principles and Practice
- Xigua Video Stability Governance System Construction 2: Raphael Principles and Practice
- Xigua Video Stability Governance System Construction 3: Sliver Principles and Practice
- Xigua Stutter & ANR Optimization Governance and Monitoring System Construction
- Toutiao ANR Optimization Practice Series - Design Principles and Influencing Factors
- Toutiao ANR Optimization Practice Series - Monitoring Tools and Analysis Ideas
- Toutiao ANR Optimization Practice Series - Case Analysis Collection
- Toutiao ANR Optimization Practice Series - Barrier Causing Main Thread Freeze
- Toutiao ANR Optimization Practice Series - Bidding Farewell to SharedPreference Waiting
- Automatically Intercepting 50% of Crashes: How ByteDance’s Self-developed Fastbot Helps Toutiao’s Stability Testing
- Online Fault - Analysis and Localization via System Logs
Power Consumption
- Linux Scheduler (EAS) that can perceive power consumption
- Android Power Consumption Improvement
- Video - Why is iPhone 13 Pro/Max Power Efficient? - ProMotion Technology Analysis
Process Management
- cpuset
- cgroup
- Android Process Scheduling: adj Algorithm
- Linux Process Management (1)
- Linux Process Management (2)–fork
- Linux Process PID Allocation Method
- Paid Training Video: Understanding the Linux Core Series: Processes, Threads, and Scheduling
- Android System Process Management: Process Creation
- Android System Process Management: Process Priority
- Android System Process Management: Memory Reclamation
- Android System Process Management: Process Scheduling
- Android System Startup: init Process and init Language
- Android Process Persistence Techniques
- Processes and Threads
- Improving Performance with Threads
- Interpreting Android Process Priority ADJ Algorithm
- Discussion on Android Thread Priority
I/O
- Android Performance Optimization: I/O Monitoring and Optimization
- Understanding File Read/Write Process from Kernel Filesystem Perspective
- In-depth Analysis of mmap: What it is, Why it’s used, How to use it
- Android IO Monitoring | Performance Monitoring Series
Debugging Tools
- Another Android Performance Profiling Tool - simpleperf
- Simpleperf
- How to Debug Android Framework
- How to Debug Android Native Framework
- Catapult Project
- Hands-on Guide to Using Systrace (Part 1)
- Hands-on Guide to Using Systrace (Part 2) - Lock Optimization
- Memory Leak Analysis with Android Studio and MAT
- Introduction to Systrace
- Systrace Basics - Systrace Prerequisites
- Systrace Basics - Why 60 fps ?
- Systrace Basics - SystemServer Interpretation
- Systrace Basics - Input Interpretation
- Systrace Basics - Vsync Generation and Working Mechanism Interpretation
- Systrace Basics - Vsync-App: Detailed Explanation of Choreographer-based Rendering Mechanism
- Systrace Basics - MainThread and RenderThread Interpretation
- Systrace Basics - Binder and Lock Contention Interpretation
- Systrace Basics - Triple Buffer Interpretation
- Systrace Basics - CPU Info Interpretation
- Systrace Smoothness Practice 1: Understanding Jank Principles
- Systrace Smoothness Practice 2: Case Study: MIUI Desktop Scrolling Jank Analysis
- Systrace Smoothness Practice 3: Some Questions During Jank Analysis
- Systrace Responsiveness Practice 1: Understanding Responsiveness Principles
- Systrace Responsiveness Practice 2: Responsiveness Practice Analysis - Taking Startup Speed as an Example
- Systrace Responsiveness Practice 3: Extended Knowledge of Responsiveness
- Systrace Thread CPU Run State Analysis Techniques - Runnable Chapter
- Systrace Thread CPU Run State Analysis Techniques - Running Chapter
- Systrace Thread CPU Run State Analysis Techniques - Sleep and Uninterruptible Sleep Chapter
- Tracing Window Transitions
- Android Performance Problem Analysis - bugreport
- Tencent APM Framework Matrix Source Code Reading - Gradle Plugin
- Tencent APM Framework Matrix Source Code Reading - TracePlugin Architecture Analysis
- Tencent APM Framework Matrix Source Code Reading - TracePlugin’s AnrTracer
- Tencent APM Framework Matrix Source Code Reading - TracePlugin’s StartupTracer
- Tencent APM Framework Matrix Source Code Reading - TracePlugin’s FrameTracer
- Tencent APM Framework Matrix Source Code Reading - Architecture Analysis
- PerfettoViewer
- Android Performance Analysis Tools Introduction | Developer Talk · DTalk
Hardware Related
Programming Languages
- Exploring Hidden Costs of Java
- Kotlin Chinese Documentation
- Java Polymorphism Implementation in Android
- Cancellation and Exceptions in Coroutines
- Thorough Understanding of References in Android and Java
- Coroutines, Context, and Scopes in Kotlin
- In-depth Understanding of Continuation Principle in Coroutines
- Android Architecture Pattern
- High performance with idiomatic Kotlin
Linux
- Kernel Exploration: Regmap Framework: Simplifying Slow I/O Interface Optimization for Performance
- Embedded Linux Boot Time Optimization
- Scenario Analysis of Linux Filesystem Read-ahead
- Using blktrace to Count Disk Block I/O Access Frequency
- Linux System Call (syscall) Principle
- Qian Mo: Talking About Linux IO (Part 1)
- Qian Mo: Talking About Linux IO (Part 2) - IO Stack in Linux Kernel
- Qian Mo: Talking About Linux IO (Part 3)
- Guo Jian: Deadline Scheduler (Part 1): Principles
- Guo Jian: Deadline Scheduler (Part 2): Details and Usage
- Guo Jian: Linux Memory Model - Flat, Non-contiguous, and Sparse
- Linux Kernel Analysis - CFS (Completely Fair Scheduler)
- Understanding CFS Scheduler from a Few Questions
- CFS Scheduler (1) - Basic Principles
- CFS Scheduler (2) - Source Code Analysis
- CFS Scheduler (3) - Group Scheduling
- CFS Scheduler (4) - PELT (per entity load tracking)
- CFS Scheduler (5) - Bandwidth Control
- CFS Scheduler (6) - Summary
- Brief Knowledge About Threads and I/O Models
- TRIM: Improving Disk Performance, Alleviating Android Jank
- LWN 456904: Avoiding Disk Writeback, Throttling Page Cache Writes
- LWN 384093: Discussion on “Writeback” Issues
- LWN 211505: Avoiding and Solving Memory Fragmentation
- SMP Primer for Android
- Memory Allocation 1 - Free List and Memory Pool
- Memory Allocation 2 - Buddy System Principles
- Memory Allocation 3 - Buddy System Implementation in Linux
- Memory Compression in Linux
- The Fun of Studying Linux Kernel
- Linux IO Block Layer Analysis
- CFS Task Load Balancing (Framework Chapter)
- Understanding Memory Defragmentation with One Diagram
- Brief Talk on New Non-Volatile Memory
- Linux devfreq framework Analysis
- Memory Leak (Growth) Flame Graph
- Linux System Performance Benchmarking System Configuration and Principles
- Cgroups and Systemd
- Devfreq Bus Dcvs
- Development of a Small Tool for Accurate CPU Utilization Calculation Based on eBPF
- Some Superficial Understandings of eBPF
- Analyzing Function Performance with ftrace
- What is eBPF? Why is it Important for Observability
Flutter
- In-depth High-Performance Graphics Rendering in Flutter
- Cross-platform Technology Evolution and Flutter’s Future
- Cross-platform Technology Trends and ByteDance Flutter Architecture Practice
- Flutter Performance Testing and Theory
- In-depth Understanding of Flutter Multi-threading
- In-depth Understanding of Flutter Engine Startup
- Flutter Rendering Mechanism - UI Thread
- Flutter Rendering Mechanism - GPU Thread
- In-depth Exploration of Flutter Performance Optimization
Fuchsia
Beyond Technology
- How to Start Learning in a New Area
- How Hard Do I Work
- Some Insights Since Starting Work
- How to Self-Learn Android?
- What is the Most Important Ability for a Technologist?
- Brief Talk on Software Engineer’s Code Literacy
- Lu Qi: Besides Good Code, How Else Can Engineers Be Excellent?
- Don’t “Wall” Yourself
- How to Become a 100% Successful Offer Harvester?
- Independent Thinking Using Simple Logical Methods
- Underlying Internal Skills Developed This Year
- 084 Create Your Own Field, Steve Jobs’ Life Rules, Voice and Exit, Benefits of Insomnia
- I Mastered How to Watch English Technical Videos Without Barriers
- Video - Tal Ben-Shahar “Positive Leadership”
- Why did I choose to be an Android developer, not an IOS developer ?
- Should Technical Leads Stop Writing Code?
- How I Went from “Mute English” to Barrier-Free English Work Communication
- English: Lou Wu - Real Methods and Misconceptions in English Learning
- Tearing Down the Wall of Knowledge
- 5000 Words Detailed Explanation of Performance Requirements
Interview Questions
- Android 2018 Latest Interview Questions
- How to Measure the Ability of an Android App Developer
- 2018 Android Interview Summary
- Android 2017-2018 Latest Interview Questions (3-5 Years Experience Personal Interview Experience)
- Android Development Engineer Interview Guide
- Alibaba Phone Interview Questions Summary, with Answers!
- Alibaba Interview Questions
- Meituan Interview Questions
- Wandoujia Three Interview Questions
- Qingting FM Interview Questions
- Sina Weibo Interview Questions
- NetEase Hangzhou R&D Interview Questions
- Why do you want to work for our company? - Common Interview Questions Analysis
- Today’s Toutiao Senior Interviewer Interviewed 2000 People in Ten Years, Summarized These 5 Points
- 2019 Meituan-Dianping Senior Android Development Winter Job Hopping Salary Increase Experience Sharing
- How to Answer Performance Optimization Questions to Impress Alibaba Interviewers?
- 2019.07 Android Interview Real Questions Collection
- How do Interviewers Evaluate Candidates in Technical Interviews?
- Text Version of a Sharing Session for HenCoder Plus Students
- Kuaishou, ByteDance, Baidu, Meituan Offer Journey
- Interview Musings in the US
- Interview Thoughts
Open Source Libraries
- Douyin Android Performance Optimization Series: Rhea, a New Generation All-round Performance Analysis Tool
- Raphael: An Android Native Memory Leak Detection Tool
- Tailor: A Universal Memory Snapshot Minimizer for Android
- xHook
- xDL Link
- Android-Inline-Hook Link
- And64InlineHook Link
- malloc debug Link
- LeakTracer Link
- Nanoscope
- Profilo
- Lottie Android 5.0
Technical Weeklies
Technical Teams and Individuals
WeChat Official Accounts
Other Links
Since the blog comment section is difficult to use, you can go to the Zhihu or Juejin pages of this article for likes or discussions:
Zhihu - Android Performance Optimization: Must-Know Skills and Tools
Juejin - Android Performance Optimization: Must-Know Skills and Tools
About Me && Blog
Below is my personal intro and related links. I look forward to exchanging ideas with fellow professionals. “When three walk together, one can always be my teacher!”
- Blogger Intro
- Blog Content Navigation: A guide for my blog content.
- Curated Excellent Blog Articles - Android Performance Optimization Must-Knows
- Android Performance Optimization Knowledge Planet
One walks faster alone, but a group walks further together.
