Tillbaka till lektionslistan

Mobila applikationer med Android: Inlämningsuppgift 2

Meningen med den här uppgiften är:

Uppgift

När man vrider på telefonen så att den byter orientering mellan porträtt och landskap, kommer Android-systemet att förstöra det gamla aktivitetsobjektet och skapa ett nytt. Man har valt att göra så i Android eftersom appen kan behöva ändra layouten när man vridit telefonen. För användaren ser det ut som att det är samma aktivitet, bara med en ny layout, men internt är det alltså ett nytt objekt.

Skapa en Android-app med en aktivitet som hanterar alla anropen från Android-systemet till aktiviteten (de metoderna som börjar med on). Den ska skriva ut alla anropen på skärmen, med klockslag, ungefär som exempelprogrammet SimpleGPSTest. Dessutom ska den, till skillnad från SimpleGPSTest, hantera att aktivitetsobjektet förstörs av systemet och sedan skapas på nytt. De utskrivna texterna ska sparas, och sen läsas in igen i det nya objektet. För användaren ska det se ut som att det är samma objekt hela tiden, förutom att man ser att onDestroy och onCreate har anropats.

Eller gör man det? Syns onDestroy? Varför (inte)? Är det några andra anrop som försvinner? Varför?

Man kan stänga av det här automatiska omskapandet av aktivitetsobjektet genom att lägga in android:configChanges="orientation|screenSize" i activity-taggen i AndroidManifest.xml, men det är inte det vi ska göra här.

Ett tips: Att vrida på telefonen kan emuleras i emulatorn, men i en del versioner av Android fungerar det inte som det ska i emulatorn.

Ett tips till: Det står visserligen "alla anropen", men det är ganska många. Det är nog bäst att begränsa sig till dem som har med aktivitetens livscykel att göra, och kanske strunta i onTrackballEvent och liknande.

Lästips

I lektionerna har jag beskrivit en del om aktiviteternas livscykel, men inte om hur man sparar undan deras data och sen laddar in det igen. Titta på artiklarna och exempelkoden som finns på Android-webbplatsen. Glöm inte att läsa vad det står i referensmanualen om klasserna AppCompatActivity och Activity.

Redovisning

Exportera Android Studio-projektet (eller motsvarande) som en Zip-fil (eller motsvarande) och skicka den till läraren. Under menyvalet File kan man välja Export to Zip File.

Skicka också med APK-filen (Androids kompilerade installationsfil). Den finns normalt i underkatalogen app/build/outputs/apk.

Vi har haft problem med överambitiösa virusfilter, som utan att meddela det kastar bort mail med stora bilagor! Det gäller särskilt Microsoft-drivna e-posttjänster som Outlook.com, Hotmail.com och Live.com. Enkla brev utan bilagor brukar fungera, men när det gäller inlämning av uppgifter i den här kursen, som kräver att man skickar in Android-projekt, så blir det ibland stora filer att skicka, och då rekommenderar jag att man använder en lagringstjänst som till exempel Google Drive, och skickar en länk dit med e-post. Man kan också använda Blackboard. Om du inte får svar så skicka gärna ett extra brev (utan bilaga!) för att kontrollera om det första brevet kom fram.

Det behövs ingen formell labbrapport, men om det är något som inte framgår direkt, till exempel hur man använder den inskickade appen eller vad utmatningen betyder, är det bra med nån sorts beskrivning. (Och underskatta inte min förmåga att inte begripa.) Glöm inte att svara på frågorna om ifall det är några anrop som försvinner, och i så fall varför.

Om samarbete: Varje student ska göra en egen lösning, och skicka in den, men det är inte förbjudet att samarbeta eller fråga andra studenter om hjälp. Däremot ska man i så fall tydligt ange vilka som man samarbetat med.

Skriv gärna i ärenderaden på brevet vilken kurs det handlar om, till exempel "Android-uppgift 2", och inte bara "Uppgift 2".

Tillbaka till lektionslistan


Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se), 16 februari 2018