Mobile Development 16 min read

Performance Optimization Strategies for iQIYI Android App on Low-End Devices

iQIYI improves its Android app for low‑end phones by classifying devices, streamlining startup with task‑based scheduling and baseline profiles, reducing UI thread load through card layout hard‑coding, message queuing, effect degradation, and pre‑fetching data, while continuously monitoring performance to ensure faster, smoother user experiences.

iQIYI Technical Product Team
iQIYI Technical Product Team
iQIYI Technical Product Team
Performance Optimization Strategies for iQIYI Android App on Low-End Devices

In the smartphone market, high‑end devices attract attention, but low‑end devices still hold a significant share. iQIYI serves a large user base on low‑end phones, prompting a series of optimizations covering cold start, smoothness, and loading speed.

Low‑End Device Classification – Devices are classified by model, memory size, and OS version. iQIYI defines a tiered strategy that can be configured per scenario (startup, smoothness, etc.) and per level (memory, model, system) to guarantee the best experience.

Startup Optimization – Startup time directly impacts user retention. iQIYI treats Application.attachBaseContext as the start point and the home‑page data display as the end point. A TaskManager framework wraps business functions into atomic tasks with explicit dependencies and thread assignments.

Key practices include merging the splash screen and home page into a single activity, loading home data behind the splash ad, and separating UI rendering from ad display. This eliminates the noticeable lag on low‑end phones when the splash ends.

Task scheduling is adjusted based on launch type (e.g., early, delayed, or skipped execution). Native library loading lock contention is reduced by conditionally pre‑loading playback libraries only when the target page is a playback page. Resource lock contention (LayoutInflater, ResourceManager) is mitigated by postponing layout pre‑loads until after the home page is shown and limiting them to a single thread.

Google’s Baseline Profiles (2022) and Startup Profiles are used to pre‑compile hot code paths, improving first‑launch speed by about 10% on selected devices.

External‑Link Launch Optimization – By detecting the target page (e.g., a playback page) during the Application phase, iQIYI prioritizes playback‑related tasks, reducing launch time for external links by roughly 1.5 seconds on low‑end devices.

Smoothness Optimization – The app’s UI is built on a custom Card framework that combines high reuse with backend‑driven CSS styling. To improve frame rates on low‑end phones, iQIYI:

Identifies stable Card types and hard‑codes their layouts, cutting view counts (e.g., waterfall Card from 40+ views to 17) and hierarchy depth (from 6 layers to 2), yielding a 10‑20% FPS gain.

Merges multiple views into a custom drawing View, gaining 1‑2 FPS.

Pre‑creates frequently used layouts during startup and uses AsyncLayoutInflater for less common ones.

Adjusts RecyclerView prefetch counts based on the number of visible items.

Moves non‑UI work (JSON parsing, DB access) off the main thread.

Cold‑Start UI Message Scheduling – Up to 4000 UI messages are posted within the first 15 seconds, causing stalls. iQIYI intercepts these messages, queues them in a custom queue, and releases them when the system UI queue is idle, with a whitelist for high‑priority messages. This reduces stutter and improves frame rate by about 8 FPS.

Effect Degradation Strategies – To further protect low‑end performance, iQIYI degrades certain effects: static images for navigation bars, disables playback animations, limits ViewPager preloading, and uses 565 pixel format for images.

Loading Speed Optimization – Techniques include:

Pre‑requesting data when the user taps the search box, overlapping network fetch with activity launch (≈200 ms saved).

Splitting data delivery: first‑screen data is sent first; subsequent data is fetched after the initial render (≈200 ms saved).

Pre‑creating layouts and fragments during idle time.

Prioritizing critical main‑thread tasks via a custom Looper monitor, ensuring image loading is not delayed by low‑priority work (stable 100 ms load time).

Business‑logic optimizations: skipping empty images, streamlining high‑frequency methods, and executing non‑critical logic asynchronously.

Anti‑Degradation Monitoring – Continuous instrumentation and daily pipeline tasks collect average load times; visual dashboards highlight regressions, enabling targeted fixes.

Overall, these optimizations address the most critical performance bottlenecks on low‑end Android devices, delivering a smoother, faster user experience while laying groundwork for future improvements.

Performance OptimizationandroidUI renderingtask schedulingstartupBaseline Profileslow-end-devices
iQIYI Technical Product Team
Written by

iQIYI Technical Product Team

The technical product team of iQIYI

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.