Vandaag is er een nieuwe update van Sola. Twee correcties: een zeldzame maar blokkerende crash bij het opstarten op Samsung Galaxy A06 (en andere instap-Androidtoestellen met een klein scherm), en een weergavefout in het submenu voor widgetpositionering, dat onderaan het scherm afgesneden kon worden weergegeven.
1.0.10 — crash bij het opstarten op Samsung Galaxy A06
Het symptoom
Een gebruiker met een Samsung Galaxy A06 (Android 16) kreeg te maken met een crash bij het opstarten van Sola: de app sloot meteen af bij het openen, zonder zelfs maar tijd te geven om het startscherm te bereiken. Het crashrapport werd via Google Play Console doorgestuurd met de volledige stacktrace, waardoor de oorzaak precies kon worden achterhaald.
De oorzaak
De Samsung Galaxy A06 is een instaptoestel met een 720×1600-scherm en een ongebruikelijke schermdichtheid (260 dpi). Deze specificaties wijken af van die van de Pixel-toestellen waarop Sola voornamelijk is getest.
In bepaalde configuraties kon de widget "In één oogopslag" (boven het startscherm, met tijd, weer en de eerstvolgende afspraak) zijn eigen hoogte tijdens een voorbijgaand frame als nul meten. Die nulwaarde werd vervolgens onthouden en doorgegeven aan het iconenraster eronder, waarvan de celhoogte daardoor ook nul werd. Het component LazyVerticalGrid van Jetpack Compose weigert die meting dan en gooit een exception waardoor de app crasht.
De oplossing
Er zijn twee defensieve controles toegevoegd:
- De widget "In één oogopslag" negeert nu metingen van nul (of negatief) voordat de hoogte wordt onthouden. De waarde blijft op de laatst geldige meting staan.
- Het startschermraster dwingt zijn celhoogte nu af tot een minimum ter grootte van één icoon. Zelfs in het uitzonderlijke geval dat de beschikbare hoogte ongeldig zou zijn, kan het raster de exception niet meer veroorzaken.
De oplossing is gevalideerd op een emulator die de exacte specificaties van de Galaxy A06 nabootst (720×1600, 260 dpi, Android 16), evenals op Pixel 4a (Android 10), Pixel Tablet (Android 14) en Pixel 8 Pro (Android 16). Geen crashes, geen zichtbare regressies.
Submenu voor widgetpositionering afgesneden onderaan het scherm
Het symptoom
Wanneer een widget dicht bij de onderrand van het scherm werd geplaatst, verscheen bij lang indrukken het contextmenu ("Configureren", "Positioneren", "Verwijderen") automatisch verschoven zodat het volledig zichtbaar bleef. Dat gedrag klopte. Maar tikte de gebruiker daarna op "Positioneren" om het submenu voor fijne positionering te openen, dan werd dat niet verschoven: het verscheen hoe dan ook onder de widget, waardoor het onderaan het scherm afgesneden werd.
De oplossing
Dezelfde automatische herpositioneringslogica als bij het bovenliggende menu wordt nu ook toegepast op het positioneringssubmenu. Het verschijnt onder de widget als er ruimte is, anders erboven, en anders tegen de onderrand van het scherm aan. De breedte van het paneel wordt bovendien gecentreerd ten opzichte van de widget, met een clamp om zijdelings overlopen te voorkomen.
Resultaat: het submenu is nu altijd volledig zichtbaar, ongeacht waar de widget zich op het raster bevindt.
Hoe de update te verkrijgen
De update wordt geleidelijk uitgerold via de Play Store (start bij 20% van de gebruikers, met een geleidelijke opbouw naar 100% over 24 tot 48 uur). Voor iedereen zou hij binnen 2 dagen beschikbaar moeten zijn. Het is ook mogelijk om zelf te controleren via de Play Store-app, onder "Apps en toestel beheren".
Openen op Google Play