9a31955fa4
android / Build + lint + test (push) Successful in 3m41s
Cold-start playback on a fresh install was taking ~25 s before any audio played. Logcat showed AudioPrefetcher was kicking off N concurrent CacheWriter jobs the instant setQueue updated uiState -- each prefetch a full upcoming-track download over the same OkHttp client as the current-track DataSource. Five-way bandwidth split plus parallel Coil cover fetches starved the current track until its full file body had streamed through (~12 MB at ~1 MB/s under contention). Now reconcile() observes uiState.isPlaying and starts upcoming-track prefetches only when the current track is actually playing. Cancellation of out-of-window jobs always runs so a queue switch or skip still frees the pipe immediately, even while paused. Cold start should drop from ~25 s -> 5-7 s on the user's network: just the single-stream throughput plus the one-time TLS/DNS tax. Refactored the inline reconcile body into computeTargets / cancelOutOfWindowLocked / startInWindowLocked helpers to keep ReturnCount under the detekt cap.