Naar content
Trending apps
  • Google Duo: videogesprekken van hoge kwaliteit

  • Gmail

  • Maps: Navigatie en OV

  • WhatsApp Messenger

  • Messenger: gratis sms'en en videobellen

Trending games
  • Fortnite

  • Minecraft Earth

  • Dr. Mario World

  • Harry Potter: Wizards Unite

  • Breaking Bad: Criminal Elements

Trending smartphones
  • Samsung Galaxy Note 20 Ultra

  • Google Pixel 4a

  • OnePlus Nord

  • Samsung Galaxy A51

  • Poco F2 Pro

Nieuwste tablets
  • Samsung Galaxy Tab S6

  • Samsung Galaxy Tab A 10.5

  • Samsung Galaxy Tab S4

  • Samsung Galaxy Tab S3 9.7

  • Asus Zenpad 3S 10

AW Special: De zin en onzin van Taskkillers in Android

· 27 mei 2010

Aangezien er over het algemeen nog erg veel onwetendheid over dit onderwerp heerst een uitgebreide post over waarom Taskkillers in Android niet nodig zijn.  Ondanks dat er veel mensen zijn die er bij zweren, is het zeker voor de nieuwere toestellen niet nodig.

Introductie

Omdat veel mensen komen van andere mobiele systemen zoals Windows Mobile en Blackberry is het goed te begrijpen dat als je met Android begint het erg wennen is. Zeker de eerste uren met je eerste Android toestel komen er vragen in je op als "Waar zit dat kruisje nou om mijn app te sluiten?" en "Waar kan ik zien welke apps open staan?". Na lang zoeken komen de meesten erachter dat voor beide vragen geen bevredigend antwoord is. Dit komt doordat Android anders is dan WM of elk ander OS dat er beschikbaar is. Laten we kijken hoe Windows Mobile met zijn geheugen omgaat.

Windows Mobile

De situatie is als volgt, je hebt lekker op het internet gesurft met Opera Mobile. Je hebt opgezocht waar je naartoe moet met Google Maps en je hebt beide applicaties niet afgesloten.

Je wil nu een spelletje gaan spelen dat meer RAM verbruikt dan er eigenlijk beschikbaar is. In Windows Mobile zou je nu een melding krijgen dat je niet genoeg geheugen beschikbaar hebt. Omdat het RAM dat door Google Maps en Opera is geclaimt ook echt niet beschikbaar is. Het RAM is van hen en daar kom je niet aan, geen alternatief mogelijk.

Android

Om in Android een soortgelijke situatie te krijgen zul je een paar apps moeten gebruiken en weer terugkeren naar het homescreen. Aangezien het gebruik in Android anders is, hebben we ook een iets andere situatie.

Als je in Android apps gebruikt, blijven ze standaard in je geheugen zitten, waarom dit gebeurt volgt verderop. Maar nu eerst wat er gebeurt als jij je spelletje start. De geheugenbeheerder kijkt naar de apps die nog in het RAM staan. Hij ziet dat de browser niet actief is, maar ook dat de browser niet genoeg geheugen vrij zal maken. Google Maps daarentegen zou precies genoeg geheugen vrijmaken. De geheugenbeheerder stuurt dan een afsluitverzoek naar Google Maps en als dat lukt kan je spelletje gewoon beginnen. In werkelijkheid gaat het iets complexer, omdat de geheugenbeheerder met meerdere factoren rekening houdt. Het voordeel van dit systeem is dat de gebruiker nooit geconfronteerd wordt met het sluiten van apps.

Waarom zo ingewikkeld?

Goede vraag! In de basis is dit een veel ingewikkelder systeem om te maken, omdat je apps moet gaan beoordelen op prioriteit en hoe essentieel ze zijn. Maar voor de gebruiker is dit heel makkelijk, omdat alle keuzes voor de gebruiker worden gemaakt. Het probleem is echter dat gebruikers zelf graag controle hebben. En dat is iets waar Android geen rekening mee heeft gehouden. De eerste taskkiller speelde perfect in op dit gevoel en veroorzaakte een kleine revolutie. Binnen no time stond de Market vol met taskkillers, de een nog uitgebreider dan de ander. En omdat er mensen zijn die er bij zweren, zullen ze voorlopig ook niet uit de Market verdwijnen.

Hoe werkt een taskkiller dan?

De taskkiller maakt het RAM vrij zodat deze vrij te gebruiken is voor nieuwe apps. Een ongewenst neveneffect van het vrijmaken van RAM is dat de staat van een app die in je RAM staat (bijvoorbeeld de Market op een bepaalde app-pagina) ook verloren gaat.

Maar ze werken toch ook echt? Ik merk het zelf!

Qua opstarttijd van apps die je nog niet open hebt gehad kan het een heel klein beetje schelen. Echter, apps die je al een keer hebt geopend worden langzamer geopend omdat ze helemaal opnieuw moeten beginnen. Het gevoel dat alle apps sneller opstarten komt grotendeels door het placebo effect. Grote aantoonbare verschillen zijn bij de meeste benchmarks niet gevonden.

Hoe werkt Android dan precies?

Dat is het makkelijkst uit te leggen aan de hand van een diagram.

In principe spreekt het diagram voor zich, maar voor degene die iets meer moeite met Engels hebben een korte uitleg:

Een app is opgebouwd uit allerlei activities die passen bij bepaalde acties. Alle onActie()vakjes zijn activiteiten die bij Actie worden uitgevoerd. Dus als je een app voor de eerste keer opstart, worden vervolgens onCreate(), onStart() en onResume() uitgevoerd. Als jij terwijl je in de app zit een smsje krijgt zal voor de app onPause() worden aangeroepen. In onPause() worden de dingen die je aan het doen was opgeslagen zodat jij niks verliest. Zodra jij klaar bent met smsen en je gaat terug naar de app wordt alleen onResume() aangeroepen, 2 stappen minder dat het starten van de totale app! Als je klaar bent in je app en naar je homescreen gaat wordt onStop() aangeroepen. Deze activiteit is meestal iets drastischer in het opslaan van gegevens waar je mee bezig was en zorgt er in sommige gevallen voor dat je bij het opnieuw opstarten van de app weer bij het beginscherm komt.  Wel wordt er programmacode in het geheugen gehouden. Zolang je geen andere apps opstart, blijft de programmacode van de app in het geheugen staan, pas als jij een nieuwe app opent die meer geheugen nodig heeft, wordt er gekeken of de apps in het geheugen vrijgemaakt kunnen worden.

Conclusie

Het is dus in principe niet nodig om Taskkillers dagelijks te gebruiken, natuurlijk zijn er wel situaties waarin ze handig zijn. Als een developer zijn app bijvoorbeeld niet op de correcte manier heeft opgebouwd, kan het voorkomen dat er onbedoeld een programma blijft draaien. Een van de bekende voorbeelden is een app die internetverbinding probeert te maken terwijl er geen (3)g(prs) verbinding is. Als deze app niet correct is opgebouwd zal deze constant tevergeefs proberen een internetverbinding te maken en daardoor je batterij leegslurpen. Dit artikel kijkt alleen naar de feature van Taskkillers om het geheugen vrij te maken omdat services over het algemeen niet zomaar gestart worden. Services zorgen er voor dat apps elk uur kunnen updaten, notificaties kunnen verzenden en (zoals Locale) instellingen kunnen wijzigen op bepaalde momenten. Zodra je services moet gaan stoppen is er of iets mis met de app die de service start of het is een instelling die je gewoon in de app zelf kan aanpassen. Ook developers geven steeds meer aan dat ze issues niet meer behandelen als deze voorkomen als je een taskkiller gebruikt!

Meer leesvoer:

Application fundamentals Android developers blog: Multitasking, the Android Way

Spelfouten, taalfouten of inhoudelijke fouten ontdekt? Stuur dan een mailtje naar de auteur van dit artikel!

Reacties (0)
Bezig met laden van reacties...