Zweiter gezielter Fix für das Samsung Galaxy A06 innerhalb von zwei Tagen. Version 1.0.10, gestern veröffentlicht, behob einen Absturz beim Start auf diesem Gerät; 1.0.10 war erst wenige Stunden installiert, als über die Google Play Console ein neues, anderes Problem gemeldet wurde — diesmal ein ANR (App einige Sekunden eingefroren). Der detaillierte Bericht ermöglichte einen schnellen Fix, und diese Version behebt außerdem einen Anzeigefehler beim Neon-Glow-Effekt der Icons im Drawer.

1.0.11 — Start-ANR auf Samsung Galaxy A06

Das Symptom

Auf dem Samsung Galaxy A06 (Android 16) fror die App beim ersten Start von Sola nach der Installation 5 bis 6 Sekunden lang ein, bevor Android den Dialog „Sola reagiert nicht — Warten / App schließen" anzeigte. Anders als beim Absturz in 1.0.10 schloss sich die App nicht abrupt: Sie blieb einfach mehrere Sekunden lang unbenutzbar.

Technisch zeigte der von der Play Console gemeldete Trace einen ANR vom Typ „Input dispatching timed out" — Android überwacht, ob der Hauptthread Eingabeereignisse (Tippen, Wischen) innerhalb von 5 Sekunden verarbeitet. Wird diese Zeit überschritten, stuft das System die App als blockiert ein und bietet dem Nutzer an, sie zu schließen.

Die Ursache

Das Samsung Galaxy A06 ist mit einem Einsteiger-Prozessor ausgestattet (Unisoc T606, vier Kerne mit 1,6 GHz) und einer bescheidenen GPU. Es ist mehrfach langsamer als die Geräte, auf denen Sola normalerweise getestet wird (Pixel 8 Pro, Pixel Tablet).

Beim Start des Homescreens lädt Sola in einem einzigen Durchgang alle Icons der auf dem Raster vorhandenen Apps (typischerweise 15 bis 25 Apps, plus die in Ordnern abgelegten). Jedes Icon durchläuft PackageManager.getApplicationIcon(), eine Android-Methode, die die Ziel-APK öffnet, die XML-Definition des adaptiven Icons liest und dann zwei Bitmap-Bilder dekodiert (die Vordergrundebene und den Hintergrund).

Auf dem Pixel 8 Pro dauert jede Dekodierung etwa zehn Millisekunden — 20 Icons werden in weniger als 300 ms angezeigt, völlig unmerklich. Auf dem A06 dauert dieselbe Dekodierung zwischen 200 und 500 Millisekunden pro Icon. 20 Icons × 300 ms = 6 Sekunden Blockierung. Dieses Laden fand jedoch auf dem Hauptthread statt (dem, der die Tipp-Eingaben des Nutzers verarbeitet), was den ANR auslöste.

Der Fix

Der Datenfluss, der das Startbildschirm-Raster speist, wird nun über flowOn(Dispatchers.IO) auf den I/O-Thread-Pool beschränkt. Konkret läuft die gesamte Icon-Dekodierung jetzt parallel auf dedizierten Threads. Nur die endgültige Liste (sobald alle 20 Icons dekodiert sind) landet zur Anzeige auf dem Hauptthread. Der Hauptthread bleibt jederzeit reaktionsfähig, selbst bei einer hohen Ladelast.

Derselbe Fix wurde auf den Datenfluss angewendet, der Ordner mit ihren Apps auflistet und unter demselben Problem litt.

Verifiziert auf einem Emulator, der die Spezifikationen des Galaxy A06 nachbildet (720×1600, 260 dpi, Android 16, Software-GPU zur Simulation der Langsamkeit): Der Homescreen erscheint sofort, kein ANR wird ausgelöst.

Fehlender Neon-Glow-Effekt der Icons im Drawer

Das Symptom

Bei Auswahl eines integrierten Icon-Packs (Pixelarticons, Lucide, Game-Icons…) mit aktivierter Option „Neon-Effekt" zeigten die Icons auf dem Homescreen, in Ordnern und im Dock korrekt einen leuchtenden Halo. Im App-Drawer jedoch verschwand der Glow: Die Icons erschienen in ihrer flachen Farbe, ohne den Neon-Effekt.

Die Ursache

Der Neon-Effekt wird über einen Drawable-Wrapper implementiert, der das Original-Icon umschließt, um beim Rendern den Halo hinzuzufügen. Zwei unterschiedliche Codepfade laden die App-Icons: einer für Homescreen und Ordner, ein anderer für den Drawer (der alle installierten Apps auf einmal auflistet).

Der vom Homescreen verwendete Pfad enthielt bereits eine spezifische Ausnahme, um diesen Wrapper zu erhalten. Der vom Drawer verwendete Pfad hatte diese Ausnahme nicht: Er rief systematisch constantState.newDrawable() auf, um eine neue Instanz des Drawables zu erzeugen — mit dem Nebeneffekt, dass der Neon-Wrapper entfernt wurde und nur das flache Icon darunter erhalten blieb.

Der Fix

Die NeonDrawable-Ausnahme wurde auf den Drawer-Pfad übertragen: Wenn das geladene Icon ein Neon-Wrapper ist, wird es nun unverändert beibehalten statt geklont. Der Glow-Effekt bleibt jetzt im Drawer genauso erhalten wie überall sonst.

Drei Unit-Tests wurden hinzugefügt, um beide Pfade (Homescreen und Drawer) sowie das umgekehrte Verhalten abzusichern (klassische Drawables müssen weiterhin geklont werden, um Nebeneffekte beim Wechsel des Icon-Packs zu vermeiden). Eine künftige Regression dieser Art wird nun frühzeitig erkannt.

So erhält man das Update

1.0.11 wird schrittweise über den Play Store ausgerollt (Start bei 20 % der Nutzer, dann schrittweiser Anstieg auf 100 % über 24 bis 48 Stunden). Es sollte innerhalb von zwei Tagen für alle verfügbar sein. Die Überprüfung lässt sich auch manuell in der Play Store App unter „Apps und Gerät verwalten" erzwingen.

Im Google Play Store öffnen