perf(android): ленивый плеер записей, O(n) merge каталога, @Immutable, лог только в debug

- RecordingPlaybackController: ExoPlayer создаётся лениво (на первый play) и
  освобождается в stop() — раньше второй плеер висел в памяти всю сессию у каждого.
  Поллер позиции 500мс крутится только во время игры (был вечный 2 Гц main-loop).
- StationRepositoryImpl.refreshStations: merge каталога O(n) через apiById/apiByName
  индексы вместо .find на каждую станцию (было O(n²) ~700×700 на холодном старте).
  Убраны verbose Log.d-трейсы (оставлен Log.e/.w на ошибки).
- Track/Station/StreamQuality помечены @Immutable — read-only модели, иначе
  списки tags/qualities делали класс нестабильным → лишние рекомпозиции списков.
- HttpLoggingInterceptor только при BuildConfig.DEBUG (включён buildConfig feature):
  в релизе нет оверхеда на каждый запрос и утечки URL в logcat.
This commit is contained in:
nk
2026-06-06 17:13:48 +03:00
parent f423344d13
commit 84c2b33473
6 changed files with 80 additions and 50 deletions

View File

@@ -1,5 +1,8 @@
package com.radiola.domain.model
import androidx.compose.runtime.Immutable
@Immutable
data class Track(
val artist: String,
val song: String,