Tillbaka till lektionslistan
Mobila applikationer med Android: Inlämningsuppgift 4
Meningen med den här uppgiften är:
-
Man ska lära sig nätverkskommunikation med hjälp av sockets
(klassen Socket)
i Android.
-
Man ska lära sig använda trådar
(klassen Thread och kanske också gränssnittet Runnable
och klassen AsyncTask) i Android.
Uppgift
Skapa en Android-app som fungerar som klient
i chat-systemet (med flera trådar) som finns i
lektion 9.
Här är ett utkast till hur den skulle kunna se ut:
Ha gärna möjlighet att logga in och logga ut också.
Förslag på arbetsgång
-
Börja med att ladda hem och provköra den textbaserade standard-Java-klienten och servern.
Zip-filer finns i
lektion 9.
Installera och kör servern på din egen maskin.
Kör servern i ett separat fönster, och koppla upp dig mot den med först en och sen flera klienter.
Undersök hur chat-systemet fungerar, och hur protokollet mellan klient och server ser ut.
-
Jag kommer att köra en chat-server på basen.oru.se.
Den färdiga chat-klienten ska koppla upp sig mot den servern.
Provkör mot den (med reservation för att den kanske inte alltid är igång),
men under utvecklingen kan det vara enklare att provköra mot en egen, lokal server.
Men ser tydligare vad som händer.
-
Skapa därefter en Android-app som kopplar upp sig mot servern,
och som fungerar på liknande sätt som den textbaserade standard-Java-klienten.
-
Provkör mot basen.oru.se-servern innan ni skickar in lösningen!
Tips
-
Man behöver skapa en extra tråd i Android-appen,
på samma sätt som i den textbaserade klienten.
-
I textbaserade program har man en "huvudtråd", den som kör metoden main.
I system med grafiskt gränssnitt har man också en "huvudtråd",
men i sådana system är detta tråden som ansvarar för att rita upp fönster och knappar.
Om den tråden jobbar med något annat,
till exempel att koppla upp sig mot en server eller vänta på data från den servern,
"fryser" hela användargränssnittet,
och det ser ut som att appen hängt sig.
-
Läs på om "UI-tråden" ("user interface-tråden") i Android,
till exempel här:
Painless threading .
-
Det är bara UI-tråden som får ändra på det visade gränssnittet,
till exempel ändra texten i en textruta.
Om en annan tråd, till exempel en uppkopplingstråd eller en serverlyssnartråd,
vill lägga till text i textrutan,
måste den på något sätt lämna över det till UI-tråden.
-
Några bra ord att söka efter:
klasserna android.os.Handler, android.os.Message och android.os.AsyncTask
Redovisning
Packa ihop hela Eclipse-projektet (eller motsvarande) som en Zip-fil (eller motsvarande)
och skicka den med e-post till läraren.
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 4", och inte bara "Uppgift 4".
|
Tillbaka till lektionslistan
Thomas Padron-McCarthy
(thomas.padron-mccarthy@oru.se),
11 oktober 2011