HTC Legend har Android 2.1.
SE X10 har Android 1.6 med noen svakheter.
Android 2.x har en oppgavebehandler.
Du kan avslutte oppgaver ved behov.

Vil du avslutte programmer i Android?

Det er faktisk ikke nødvendig.

Superraskt forklart

Tradisjonelt fungerer multitasking, eller kjøring av flere oppgaver, på en telefon som på en PC. Det vil si at programmene kjører parallellt i bakgrunnen, og at de bruker minne og prosessorkapasitet hele tiden. Slik fungerer det på S60 og Windows Mobile.

På Android kjører som hovedregel bare programmet du ser på skjermen. Når du legger et program i bakgrunnen skrives det til minnet og blir inaktivt.

Når et annet program har behov for å bruke minne avsluttes programmene som ligger i bakgrunnen etter behov.

Derfor er det som regel ikke nødvendig å avslutte et program på Android.

Noen utviklere har misbrukt en funksjon i Android som lar programmer kjøre selv om de ikke vises på skjermen. Denne funksjonen er fjernet i Android 2.0 og 2.1.

Trenger du å avslutte et Android-program er det noen metoder du kan bruke:

* Du kan trykke tilbake-tasten til programmet ikke vises lenger.
* Du kan åpne programmer-menyen i innstillinger-menyen og tvinge et program til å avslutte.
* Du kan laste ned og installere en oppgavebehandler fra Market.
* Har du Android 2.x er det en oppgavebehandler under Innstillinger > Programmer

Om du har en Android-telefon har du sannsynligvis stilt deg selv dette spørsmålet: Hvordan avslutter jeg programmer?

Svaret er enkelt: Du avslutter ikke programmer, Android avslutter dem for deg.

Android ordner opp på egen hånd

Det er nemlig en utbredt misforståelse at det ligger masse programmer i bakgrunnen og stjeler minne og andre ressurser, og at det ikke er noen måte å avslutte disse programmene på en enkel måte. Men det er faktisk ikke nødvendig å avslutte programmer på en Android-telefon.

Systemet er nemlig kontruert slik at operativsystemet automatisk avslutter programmer som ikke er i bruk.

Og "oppgavebehandleren" du finner ved å trykke inn hjem-tasten i noen sekunder er faktisk ikke noen oppgavebehandler i det hele tatt.

Som en nettleser

For å forstå dette er det enklest å se for seg Android som en nettleser. Når du surfer på nettet er det enkelt å bla seg tilbake i nettsider. Men selv om du kan bla deg tilbake betyr ikke det at nettsiden ligger oppe i bakgrunnen. Det som i stedet skjer er at informasjon om hva du sist gjorde på nettsiden, som for eksempel hvor langt ned du har scrollet, blir lagret. Når du så blar deg tilbake i nettleserhistorikken lastes nettsiden inn på nytt. Men selve siden er sånn sett ikke “åpen” i bakgrunnen.

Tilsvarende henter du ikke frem en liste over åpne programmer om du holder inne hjem-tasten på telefonen. Dette er bare en historikk over hvilke programmer du startet sist, akkurat som du kan hente opp historikken i nettleseren din.

Analogien er kanskje ikke hundre prosent riktig, da forskjellige nettlesere fungerer på forskjellige måter, men det gir et bilde av hva som skjer på en Android-telefon.

Vi kan bruke et eksempel fra en video Google selv har laget.

Mysteriet med den avsluttede e-postklienten

Du åpner e-postklienten og ser listen over meldinger i innboksen din. Dette er et program som nå kjører. Når du markerer en melding og åpner dette vil et nytt vindu åpne seg, og du får se meldingen. Meldingen inneholder kanskje en lenke til et nettsted, og trykker du på denne vil nettleseren åpne seg. Nettstedet har igjen en lenke til et Google-kart, og å trykke på denne vil åpne Google Maps-programmet på telefonen.

For deg som bruker vil det nå virke som om e-postklienten og nettleseren kjører i bakgrunnen. Det gjør de ikke nødvendigvis. Her kommer nemlig elementet med Androids styring og lukking av programmer inn i bildet.

Nødt til å lagre seg selv

Alle Android-programmer er nødt til å lagre seg selv når de ikke lenger vises. Det som skjer er at programmets status, som for eksempel hvor du er i innboksen din og hvilken melding som er markert, blir lagret.

Når programmet har lagret sin status kjører det ikke lenger. Men når du henter frem programmet igjen er du fortsatt på samme sted som da du så på det sist.

Det er som på en bærbar PC du lukker igjen. Når du åpner PC-en senere er programmene du hadde åpne fortsatt på skjermen, selv om PC-en har vært av. Det som har skjedd er at PC-en har lagret informasjonen på harddisken, slik at dette kan hentes frem når du skur på PC-en igjen.

Programmer i Android er altså konstruert slik at de må lagre seg til lagringsminnet hver gang de ikke er synlige på skjermen.

I dette tilfellet har e-postklienten lagret sin status og skrevet den til lagringsminnet på telefonen. I praksis kjører ikke lenger programmet. Den ligger likevel i arbeidsminnet så lenge minnet ikke trenger å brukes av noe annet, og kan raskt hentes frem igjen.

Frigir minnet selv

Men med to vinduer i e-postklienten (innboksen og meldingen) i tillegg til nettleseren åpne er det ikke nok minne til at kartprogrammet kan kjøre.

På andre systemer, som Windows Mobile eller Symbian, måtte du nå aktivt ha avsluttet programmene som ligger i bakgrunnen. Men det trenger du ikke i Android.

Siden programmene i Android er tvunget til å lagre seg selv i lagringsminnet kan systemet avslutte programmer som ikke kjører.

Derfor vil Android nå avslutte e-postklienten for å frigi minne til å kjøre kartprogrammet. Når du er ferdig med å se på kartet kan du hente frem igjen e-postklienten, og det vil ikke virke som om den er avsluttet i det hele tatt. Det som i praksis skjer er at Android starter e-postklienten på nytt og laster inn informasjonen som er lagret.

Så dersom du holder inne hjem-tasten til Android og ser listen over programmer som “kjører” i bakgrunnen er det ikke slik at de ligger og suger strøm av batteriet ditt.

Programmer avsluttes over tid

Det er også slik at programmer automatisk vil skrives til minnet og avsluttes etter en viss tid dersom de ikke har vært aktive på en stund. Dette gjøres for å sikre at nye programmer starter raskt.

Dette betyr for øvrig ikke at det ikke går an å kjøre flere programmer på samme tid i Android. Enkelte programmer, som musikkspilleren eller et program som laster ned noe fra internett, kan ved behov kjøre i bakgrunnen, men dersom de blir inaktive eller andre programmer trenger ressursene vil Android kunne avslutte også disse.

Poenget er å ikke se på Android som en PC, hvor programmer kjører helt til du avslutter dem. Det fungerer rett og slett ikke på samme måte.

Derfor er det ikke egentlig et behov for å avslutte programmer som kjører i bakgrunnen på Android. 

Det er likevel skikkelig multitasking

Dette betyr ikke at Android ikke har multitasking. Det er nemlig mulig å skrive programmer som er konstruert for å kjøre prosesser i bakgrunnen. Du kan for eksempel installere en Exchange-klient som synkroniserer i bakgrunnen. Da kjører ikke selve e-postklienten, men en oppgave tilknyttet programmet. Det samme gjelder for eksempel MSN-klienter, som kan kjøre i bakgrunnen slik at du får varsler om nye lynmeldinger når disse kommer inn.

Men her er det også et problem.

Den store svakheten

Noen funksjoner i systsmet har nemlig tillatt programvareutviklere å tvinge programmer til å fortsette å kjøre selv om de kan avsluttes. Dette har vært et problem frem til og med Android 1.6.

Det har vært mulig for programvareutviklere å implementere en funksjon kalt "Service.setForeground()" i programmer. Denne funksjonen gjør at programmet behandles som om det kjører i forgrunnen, og det kan dermed ikke avsluttes automatisk. Android-telefonen vil da ikke avslutte programmet selv om det er behov for minnet eller prosessorkapasiteten programmet bruker.

Dette er en funksjon tiltenkt programmer som faktisk har behov for slik prioritet, men funksjonen har blitt misbrukt av programvareutviklere. Det har for eksempel vært ønsket at programmer som bruker funksjonen enkelt skal kunne avsluttes av brukeren ved behov, men dette har ikke alltid vært tilfellet. Programmer som bruker "Service.setForeground()" kan faktisk ikke engang avsluttes med den vanlige "kill"-kommandoen i Android som skal avslutte et hvilket som helst program.

Som et resultat ble derfor hele funksjonen fjernet i Android 2.0. I stedet har det kommet en funksjon som varsler deg om at programmet fortsatt kjører, og den forsvinner med en gang programmet ikke lenger kjører. Dermed er det nå lett å se hvilke programmer som faktisk går i bakgrunnen.

Et annet problem har vært at oppgaver har kjørt i bakgrunnen, blitt avsluttet av Android, og deretter startet opp igjen senere. Dette har i mange tilfeller ført til at oppgavene har hengt seg opp.

Dette er også fikset i Android 2.0. Det har også kommet på plass en oppgavebehandler som viser oppgaver som kjører i bakgrunnen.

Grunnen til at Android-telefoner blir trege er først og fremst at for mange oppgaver forsøker å starte i bakgrunnen. Med nyhetene i Android 2.0 bør problemet bli vesentlig mindre.

For øvrig er det en god idé å gjøre følgende dersom du oppdager at programmer gjør telefonen din treg eller bruker opp batteriet ditt: Avinstaller programmet, send en e-post til utvikleren hvor du forklarer problemet, finn deretter et annet program som kan gjøre noe tilsvarende.

Du kan lese mer om disse forbedringene i Android på android-developers.blogspot.com.

Flere telefoner har, eller får, Android 2.x. For eksempel har HTC Legend Android 2.1. Sony Ericsson X10 har Android 1.6, men skal kunne oppgraderes til 2.1. Samsung Galaxy Spica vil også kunne oppgraderes til 2.1.

Mer informasjon

Se også videoen under for en grundig forklaring av hvordan kjøring av flere programmer på Android fungerer. Du kan lese mer om hvordan det hele er skrudd sammen på Googles utviklersider.