Oud-stagiair Google legt uit waarom Android UI niet zo vloeiend is als iOS UI

Een oud-stagiair van Google heeft tekst en uitleg gegeven waarom animaties op Android soms minder vloeiend zijn dan op iOS. Dit heeft ondermeer te maken met de applicaties, processors en de architectuur van beide systemen.

De stagiair heeft in een uitgebreide, en vooral technische, post op Google+ uitleg gegeven over het vloeiende iOS en het soms haperende Android OS. De oud-stagiair, die binnenkort stage gaat lopen bij het Windows Phone team van Microsoft, laat weten dat het vooral te maken heeft met de prioriteit die gegeven wordt door het OS aan het renderen van animaties. Binnen iOS krijgt dit de hoogste prioriteit en krijgt de zogenaamde thread ook een eigen toegewezen thread voor het UI opgelegd waardoor de processor de rendering gelijk op zich neemt.

Bij het Android OS is de prioriteit wat anders, aldus Andrew Munn. Binnen Android is de prioriteit het zelfde geregeld als bij normale computers. Dit betekent dat de prioriteit ‘normaal’ is van de thread en er geen eigen UI thread wordt aan gemaakt om de animatie te renderen. Apple’s iOS is zo opgebouwd dat zodra een vinger op het scherm wordt neergelegd door een gebruiker, er gelijk een real-time priority UI thread wordt aangemaakt die overige taken stopt. De software richt zich vervolgens helemaal op de input van de gebruiker en de daarbij behorende animaties. Binnen Android worden de animaties dus met de zelfde prioriteit door de processor afgehandeld als alle overige threads met soms als gevolg dat het OS wat blijft haken.

Als voorbeeld wordt het renderen van een pagina in de browser gegeven. Binnen iOS als een pagina geladen wordt en halverwege het vinger op het scherm gezet wordt dan stopt het renderen van de pagina door iOS. Pas zodra de vinger wordt losgelaten, gaat het laden van de pagina verder. Binnen Android worden beide zaken tegelijkertijd afgehandeld waardoor het soms kan voorkomen dat de animaties niet vloeiend zijn.

Maar er zijn ook andere factoren die volgens Munn debet zijn aan de soms trage animaties van Android. Zo is de Tegra 2-processor van Nvidia niet alleen maar rozegeur en maneschijn. Volgens Munn heeft deze dualcore processor namelijk een bijzonder lage geheugenbandbreedte en beschikt de chip niet over NEON-instructies. Met name Honeycombtablets, zoals de Samsung Galaxy Tab 10.1, hebben een stroperige interface doordat de GPU van de Tegra 2 het niet kan bijbenen door de lage geheugenbandbreedte. Processors zoals Samsung’s eigen Exynoscore, die in de Galaxy Tab 7.7 en de Galaxy S2 te vinden is, doet dit stukken beter en de ervaring in combinatie met Honeycomb en de core is dan ook vele malen beter, aldus Munn.

Munn tekent hierbij wel aan dat deze problemen relatief gemakkelijk op te lossen zijn en veel van de problemen al opgelost zijn in Android 4.0. Alleen het prioriteitprobleem van de UI thread dient Google zelf nog te verhelpen.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd.

    1. Stefan Witkamp -

      Onzin, dit is helemaal niet onbegrijpelijk. Het is gewoon een ontwerpkeuze geweest. Zoals in het artikel het browser-voorbeeld wordt aangehaald om de prioriteiten te laten zien, kan ik heel goed begrijpen dat sommigen juist vinden dat een animatie dan maar wat minder vloeiend loopt, zolang de pagina maar wel door blijft laden. Bij een iPhone loopt door de prioriteiten welliswaar de UI soepeler, maar duren alle andere taken langer dan nodig.. zonde van de tijd voor wat fancy UI-animaties!?

      1. Dominick -

        Helemaal mee eens. Hoewel ze daar nu natuurlijk mooi iets mee kunnen doen met die dualcore processoren.. En dat gebeurt dan weer niet voorlopig 🙁

    1. Danijel -

      Het komt er simpelweg op naar dat het Android OS in de kern minder prioriteit geeft aan het afhandelen van grafische elementen en het iOS dit juist hele hoge prioriteit geeft. Daarom loopt het soepeler omdat de processor dus eerder grafische elementen oppakt in het iOS.

Meld je aan voor onze nieuwsbrief!

Contact met ons?

  • Qontent Matters
  • Czaar Peterstraat 159
  • 1018 PJ Amsterdam

Volg ons via