feat(android): Cache nach einem Update einmalig leeren (1.7)
Im cacheDir liegen Coils Bildspeicher und heruntergeladene APK-Updates, beides jederzeit neu beschaffbar. Blieb dort nach einer neuen Version etwas Altes liegen, war "Cache leeren" von Hand in den Systemeinstellungen die einzige Abhilfe — nichts, das sich einem normalen Nutzer erklaeren laesst. Geleert wird jetzt beim ersten Start nach einem Versionswechsel, verglichen wird der gespeicherte versionCode. Im laufenden Betrieb passiert nichts, sonst waeren die Cover bei jedem Start neu zu laden. Beim allerersten Start nach der Installation ebenfalls nicht, da gibt es nichts aufzuraeumen. Offline-Downloads bleiben unberuehrt: die liegen unter filesDir/offline. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
651f979401
commit
fca7cc79c1
3 files changed
+35
-2
No files matched your search
@@ -72,6 +72,13 @@ Versioning: two-part `MAJOR.MINOR` — each release bumps the minor (features an
|
|||||||
## [2.4] — 2026-09-06
|
## [2.4] — 2026-09-06
|
||||||
|
|
||||||
### Added
|
### 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
|
- **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,
|
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
|
klappte mal und mal nicht und ohne Verbindung gar nicht. Jetzt liegen die vollständigen Songs als
|
||||||
|
|||||||
@@ -14,8 +14,8 @@ android {
|
|||||||
applicationId = "com.novasonic.app"
|
applicationId = "com.novasonic.app"
|
||||||
minSdk = 26
|
minSdk = 26
|
||||||
targetSdk = 35
|
targetSdk = 35
|
||||||
versionCode = 9
|
versionCode = 10
|
||||||
versionName = "1.6"
|
versionName = "1.7"
|
||||||
// Host der eigenen NovaSonic-Web-App — Ziel der geteilten Links. Einmal in
|
// Host der eigenen NovaSonic-Web-App — Ziel der geteilten Links. Einmal in
|
||||||
// gradle.properties setzen (novasonicHost=music.example.com); ohne Angabe bleibt der
|
// gradle.properties setzen (novasonicHost=music.example.com); ohne Angabe bleibt der
|
||||||
// Platzhalter stehen und der App-Link greift schlicht nicht.
|
// Platzhalter stehen und der App-Link greift schlicht nicht.
|
||||||
|
|||||||
@@ -24,8 +24,34 @@ class NovaSonicApp : Application() {
|
|||||||
// 30s preview player — app-level so its control bar survives navigation (see AppNavigation).
|
// 30s preview player — app-level so its control bar survives navigation (see AppNavigation).
|
||||||
val previewController: PreviewController = PreviewController()
|
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() {
|
override fun onCreate() {
|
||||||
super.onCreate()
|
super.onCreate()
|
||||||
|
cacheNachUpdateLeeren()
|
||||||
offlineRepository = OfflineRepository(applicationContext) // must be first
|
offlineRepository = OfflineRepository(applicationContext) // must be first
|
||||||
repository = MusicRepository(applicationContext)
|
repository = MusicRepository(applicationContext)
|
||||||
playerController = PlayerController(applicationContext, repository)
|
playerController = PlayerController(applicationContext, repository)
|
||||||
|
|||||||
Reference in new issue
Block a user