Designing a Multi‑Scope Architecture for Bilibili’s Integrated Playback Page Using Dagger and Kotlin Coroutines
To merge Bilibili’s UGC and OGV playback pages, the team built a multi‑scope architecture that aligns Dagger‑managed dependency‑injection components with Kotlin CoroutineScopes—PageScope, BizScope, and VideoPlayScope—so each business module is instantiated only when needed, automatically disposed with its parent lifecycle, and remains memory‑leak‑free.