diff --git a/CHANGELOG.md b/CHANGELOG.md index 886f37a..e147188 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -72,6 +72,13 @@ Versioning: two-part `MAJOR.MINOR` — each release bumps the minor (features an ## [2.4] — 2026-09-06 ### Added +- **Android 1.7 (versionCode 10): Cache räumt sich nach einem Update selbst auf** — im `cacheDir` + liegen Coils Bildspeicher (Cover) und heruntergeladene APK-Updates. Blieb dort nach einer neuen + Version etwas Altes liegen, half nur „Cache leeren" von Hand in den Systemeinstellungen — nichts, + das man einem normalen Nutzer erklären möchte. Beim ersten Start nach einem Versionswechsel wird + der Cache jetzt einmalig geleert; im laufenden Betrieb passiert nichts, sonst wären die Cover bei + jedem Start neu zu laden. **Offline-Downloads sind nicht betroffen**, die liegen unter + `filesDir/offline` und damit außerhalb des Caches. - **Android 1.6 (versionCode 9): Warteschlange ist sofort da** — bisher wurden nur die Song-Ids gesichert und beim Start **einzeln nacheinander über das Netz** nachgeladen. Das dauerte Sekunden, klappte mal und mal nicht und ohne Verbindung gar nicht. Jetzt liegen die vollständigen Songs als diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index c024e85..7096766 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -14,8 +14,8 @@ android { applicationId = "com.novasonic.app" minSdk = 26 targetSdk = 35 - versionCode = 9 - versionName = "1.6" + versionCode = 10 + versionName = "1.7" // Host der eigenen NovaSonic-Web-App — Ziel der geteilten Links. Einmal in // gradle.properties setzen (novasonicHost=music.example.com); ohne Angabe bleibt der // Platzhalter stehen und der App-Link greift schlicht nicht. diff --git a/android/app/src/main/kotlin/com/novasonic/app/NovaSonicApp.kt b/android/app/src/main/kotlin/com/novasonic/app/NovaSonicApp.kt index 53cbc9a..47c830d 100644 --- a/android/app/src/main/kotlin/com/novasonic/app/NovaSonicApp.kt +++ b/android/app/src/main/kotlin/com/novasonic/app/NovaSonicApp.kt @@ -24,8 +24,34 @@ class NovaSonicApp : Application() { // 30s preview player — app-level so its control bar survives navigation (see AppNavigation). val previewController: PreviewController = PreviewController() + /** + * Raeumt den Cache nach einem App-Update einmalig auf. + * + * Im cacheDir liegen Coils Bildspeicher (Cover) und heruntergeladene APK-Updates — beides + * jederzeit neu beschaffbar. Nach einem Update konnten dort Reste liegen, die zu alten Anzeigen + * fuehrten; die einzige Abhilfe war bisher "Cache leeren" von Hand in den Systemeinstellungen, + * was man einem normalen Nutzer nicht erklaeren moechte. Das passiert jetzt automatisch und + * ausschliesslich beim Versionswechsel, nicht im laufenden Betrieb — sonst waeren die Cover bei + * jedem Start neu zu laden. + * + * Offline-Downloads sind NICHT betroffen: die liegen unter filesDir/offline, nicht im cacheDir. + */ + private fun cacheNachUpdateLeeren() { + val prefs = getSharedPreferences("app_state", MODE_PRIVATE) + val zuletzt = prefs.getInt("last_version_code", -1) + val jetzt = BuildConfig.VERSION_CODE + if (zuletzt == jetzt) return + if (zuletzt != -1) { + runCatching { cacheDir.deleteRecursively() } + .onSuccess { android.util.Log.i("NsCache", "Cache nach Update $zuletzt -> $jetzt geleert") } + .onFailure { android.util.Log.w("NsCache", "Cache-Leeren fehlgeschlagen", it) } + } + prefs.edit().putInt("last_version_code", jetzt).apply() + } + override fun onCreate() { super.onCreate() + cacheNachUpdateLeeren() offlineRepository = OfflineRepository(applicationContext) // must be first repository = MusicRepository(applicationContext) playerController = PlayerController(applicationContext, repository)