Android översikt. TDDD80 Mobila och sociala applikationer

Relevanta dokument
Entreprenöriell programmering. Android översikt

Android översikt. TDDD80 Mobila och sociala applikationer

Entreprenöriell programmering TDP028

Android fortsättning. TDDD80 Mobila och sociala applikationer

Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID

Android - En översikt samt titt på utvecklingsmiljö. Kalle Prorok 12 nov 2013

TDDD80 Mobila och sociala applika1oner. Kursintroduk1on

Agil användbarhetsutveckling för handhållna enheter. Per Lind

Högskolan i Gävle. Introduktion till att skapa appar för Android VT Eat App! Jacob Gavin

TDDD80 Mobila och sociala applikationer. Kursintroduktion

Exemple på Tentauppgifter Webbprogrammering

Windows Forms Winstrand Development

MVC med Javascript och Ajax. Filip Ekberg

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

Riktiga Vykort Partner App Teknisk beskrivning

Properties. Användbara metoder som kan anropas i propertychanged:

Android och iphone. Kalle Prorok April 2011

Konstruktion av klasser med klasser

Observer Pattern och MVC. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

Design och konstruktion av grafiska gränssnitt

Tentamen Nätverksprogrammering Lösningsförslag

Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer.

Swedbank Mobile Loadtesting. LoadRunner Mobile App protocol

INSTALLATIONSGUIDE TILL ANDROID UTVECKLINGSMILJÖ

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

PROGRAMMERINGSTEKNIK TIN212

Föreläsning 3: Händelsestyrda program och användargränssnitt

Fortsättningskurs i programmering F 5. GUI händelsehantering - undantagshantering Hugo Quisbert AWT. Paket för hantering av grafik

Kommunikation och Användargränssnitt - Androidutveckling

Objektorienterad Programkonstruktion. Föreläsning 11 6 dec 2016

Programutvecklingsprojekt Projektgrupp Elvin. Detailed Design Document

TDDD80 Mobila och sociala applikationer. Kursintroduktion

Grafiska användargränssnitt i Java

Applikationsutveckling för Android

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

DAT043 - Föreläsning 7

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

Grafiska användargränssnitt i Java

UML. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Vad kännetecknar en god klass. Vad kännetecknar en god klass. F12 Nested & Inner Classes

ITK:P1 Föreläsning 4. Grafiska gränssnitt i Java. AWT-komponenter

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Klasshierarkier - repetition

Denna vecka. Idag. Grafiskt användarsnitt. Vi kommer att se

Klasshierarkier. Klasser kan byggas på redan definierade klasser

SI-pass 4. Johan Brook och Jesper Persson. 25 september Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner.

Android La sa va rden fra n sensorer

Objektorientering - Arv och polymorfi. Eric Elfving Institutionen för datavetenskap

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

TDDC76 - Programmering och Datastrukturer

Polymorfi. Objektorienterad och komponentbaserad programmering

Kort om klasser och objekt En introduktion till GUI-programmering i Java

Laboration 3 GUI-programmering

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

Energieffektiv GUI design

Objektorienterad programmering med Java Swing: Händelser, lyssnare och applets

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

OOP Objekt-orienterad programmering

EDA095 HTML. Per Andersson. April 26, Lund University Innehåll: HTML, CSS, DOM, JavaScript

Objektorienterad Programmering DAT043. Föreläsning 5 29/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

TENTAMEN. Kurs: Applikationsutveckling i Java 5DV135. Ansvarig lärare: Johan Eliasson. HT12 Datum: Tid: kl

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

public interface Skrivbar { void skriv(); } public class Punkt implements Skrivbar { public double x; public double y;

Instuderingsuppgifter läsvecka 2

TDDI82 - Projekt. Christoffer Holm. Institutionen för datavetenskap (IDA)

Föreläsnings 11 - GUI, Händelsestyrda program, MVC

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 7 Erik Nilsson, Institutionen för Datavetenskap, LiU

Tentamen Nätverksprogrammering Lösningsförslag

MVC med Javascript och Ajax. Filip Ekberg

The Last Adventure. Innehåll. Objektorientering. Språket Java. Java - Paket. Java - synlighet. Den sista lektionen. Repetition.

TDDD78 Viktiga begrepp, del 2

Objekt-orienterad programmering. Klassbegreppet och C++ UML. UMLs fördelar

LiTHehack? Här? lithehack se koma Tisdagar och torsdagar

JavaScript. JavaScript Ramverk (Bibliotek) jquery + jquery UI

Tentamen EDA698 Realtidssystem (Helsingborg)

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Concurrency Saker händer samtidigt. Process En instans av ett program

725G61 - Laboration 8 Ett enkelt GUI. Sahand Sadjadee och Johan Falkenjack

WINDOWS PRESENTATION FOUNDATION LEKTION 1

Mobila applikationer och trådlösa nät

Målen med OOSU. Objektorienterad programmering. Objektorienterad programmering. Karlstads Universitet, Johan Öfverberg 1

Grafiska användargränssitt och händelsehantering

Snake App Rapport - Snake App Rapport Utskriven/PDF Export: Copyright Version 1.2 Sidan 1 av 9.

Observer Pattern och MVC. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2017

OOP Objekt-orienterad programmering

TENTAMEN: Objektorienterad programmering. Läs detta! Skriv din tentamenskod på varje blad (så att vi inte slarvar bort dem).

TDDC76 Programmering och datastrukturer

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

Flextest Mobilapplikation för att testa, undersöka och förbättra kondition

TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 3 Erik Nilsson, Institutionen för Datavetenskap, LiU

Lösningsförslag till tentamen i EDAF25 Objektorienterad modellering och design Helsingborg

Lösningar till tentamen i EDAF25

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

Lycka till! TENTAMEN: Objektorienterade applikationer. Läs detta! 1 (6) Tentamen

Design och konstruktion av grafiska gränssnitt

Android - Tips & Tricks

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Transkript:

Android översikt TDDD80 Mobila och sociala applikationer

Vad som skiljer Android från Java Responsiv Appar får ett par sekunder på sig att reagera på användarinput Resurssnål Appar i bakgrunden dödas när minnet behövs för annat Så fort app:en hamnar i bakgrunden är det fritt fram för Android att döda den Jfr. vanlig Quit på en desktop Ges ingen tid att spara undan viktig info

Java Android Lägre minnesanv.

Android app

Egen mobil eller platta

Felsökning via USB-koppling

Emulator Emulerar en AVD (Android Virtual Device) Har AVD Välj CPU, etc. HAX hardware acceleration Kamera Sensorer Nätverk http://developer.android.com/tools/devices/emulator.html

Lifecycle för kodkomponenter

Spara undan tillstånd Processen stoppas Utslängd urminnet

Aktiviteter startas av Android public class MainActivity extends AppCompatActivity { @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); } Ingen konstruktor @Override protected void onpause()

Aktiviteter dödas av Android Dödas T.ex. om appen hamnat i bakgrunden (och ont om minne) T.ex. om telefonen roteras Spara undan tillstånd i god tid, innan aktiviteten dödas. Två sätt: Ge dina vyer Id, och låt systemet spara dessa vyer Override på onsaveinstancestate()

GUI Graphical User Interface

Views (grafiska element)

XML extensible Markup Language Ung. som html, fast för vilka data som helst fritt att bestämma taggar och attribut <img src="madonna.jpg" alt='foligno Madonna, by Raphael' /> <step number="3">connect A to B.</step>

Android UI layout i XML <LinearLayout xmlns:android="http://schemas.android.com/ " xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:orientation= vertical" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:showin="@layout/activity_my">

XML kod XML Kod Statisk placering och utseende på komponenter (dvs. kan inte ta bort under körning) Tomma behållare kan läggas ut i xml (FrameLayout) Dynamiskt tillägg/borttagning av element Fyllning med innehåll

Fragment Fragment kan åka in/ur activity Kan inte lita på att fragment x just nu finns där Fragment ska kommunicera via aktiviteten Komm. till aktivitet Definiera ett interface som aktiviteten ska implementera Anropa callback-metoden vid knapptryck, etc Komm. från aktivitet Hitta fragmentet, findfragmentbyid() http://developer.android.com/training/basics/fragments/co mmunicating.html

Vanliga problem med fragment Hamnat utanför skärmen Är Layout:en rätt konfigurerad? T.ex. LinearLayout är direction rätt? Hittar inte vyn ifrån koden Finns vyn verkligen på skärmen? Lägg anrop findviewbyid( ) I onactivitycreated()

Fånga upp klick (enkelt) I XML: <Button android:layout_width="wrap_content android:layout_height="wrap_content android:text="@string/button_send android:onclick="sendmessage" /> I din kod: public void sendmessage(view view) { }

Fånga upp klick (rekommenderat) I Activity eller i Fragment Button btn = (Button) findviewbyid(r.id.mybutton); btn.setonclicklistener(new View.OnClickListener() { @Override public void onclick(view view) { sendmessage(view); } }); public void sendmessage(view view) { }

Olika skärmstorlekar http://developer.android.com/guide/practices/tablets-and-handsets.html

Aktivitet Huvudbeståndsdel i appen

Aktivitet Vilken aktivitet är main AndroidManifest.xml <activity... > <intent-filter... > <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter>... </activity>

Activity Ger uppdelning i tasks som är logiska för användaren Skriva inlägg Kolla på flöde Dela en bild Upptar hela skärmen När användaren klar med uppgiften Bakåt/uppåt-knapp Aktiviteten dödas

Anrop med intent Går via OS Vet inte alltid om finns aktivitet som kan ta emot Android kan launcha annan app om nödvändigt

Anrop av aktiviteter med intent Förfrågan att någon utför en typ av uppgift Intent intent = new Intent(Intent.ACTION_VIEW, ); fyll på med extra information att skicka med startactivity(intent); Starta aktivitet i egna appen Intent intent = new Intent(this, NextActivity.class); fyll på med extra information att skicka med startactivity(intent);

Exempel på intent public void createalarm(string message, int hour, int minutes) { Intent intent = new Intent(AlarmClock.ACTION_SET_ALARM).putExtra(AlarmClock.EXTRA_MESSAGE, message).putextra(alarmclock.extra_hour, hour).putextra(alarmclock.extra_minutes, minutes); if (intent.resolveactivity(getpackagemanager())!= null) { startactivity(intent); } }

Att ta emot resultat från en aktivitet Activity1 anropar activity2 startactivityforresult( ) Callback: Activity1 implementerar onactivityresult() som Android anropar när activity2 är klar Ex activity1: @Override protected void onactivityresult(, Intent data) { } Intent med resultat-data

Nätverk

Nätverk AndroidAsyncHttp Populärt bibliotek http://loopj.com/android-async-http/ f Volley Googles egna bibliotek http://developer.android.com/training/volley/ind ex.html

Volley

För större nerladdningar Använd inte Volley Kräver att hela hämtade innehållet ligger i minnet under parsning Bättre att starta en Service i bakgrunden OBS! Bör startas på sin egen tråd! Mha AsyncTask OBS! Ingen garanti att servicen inte avslutas abrupt (t.ex. vid skärmrotation)

Trådar

GUI responsiveness Appen måste reagera på användarinput inom 5 sekunder (helst 100-200 ms) Annars får användaren en "Application Not Responding" (ANR) dialog

Trådar Render thread Animeringar UI thread (main thread) Reseverat för användarinteraktion Visa info Reagera på klick, etc. Worker thread (1, 2, 3,.) För tunga/långsamma saker i bakgrunden

AsyncTask private class HeavyTask extends AsyncTask<Long>{ } // Do the long-running work in here protected Long doinbackground(url... urls) { // This is called when doinbackground() is finished protected void onpostexecute(long result) { } shownotification("downloaded " + result + " bytes"); Ber artigt att få komma tillbaks till UI-tråden (så fort detta blir möjligt/lämpligt)

rita.kovordanyi@liu.se www.liu.se