Android-Programmering Våren 2015. Oversikt Ytelse vs responsivitet Strategier for og opprettholde responsiviteten Tråder Asynchronous Task.

Slides:



Advertisements
Liknende presentasjoner
Repetisjon innkapsling static tabell av primitiv datatype LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring.
Advertisements

Microsoft BizTalk og WEBservices
SuperOffice - Visma Global ERP link - Tilbud/Ordre SuperOffice - Visma Global integrasjonen består av 3 produkter. ERP link SuperOffice - Visma Global.
Høgskolen i Oslo Webprogrammering Tilstandsbevaring Sessions og cookies.
Håndbok til Studweb LES DENNE! Du får en side-for-side veiledning med forklaringer og tips…
C++ for Java-programmerere
Sekvensdiagram En sekvens viser hvordan objekter samarbeider om en oppgave Diagrammet viser hvem som har kontrollen til enhver tid Det spesifiserer nøyaktig.
Android-Programmering Våren Google Maps • Installere Google Play Services SDK (må kanskje oppdatere ADT) • Legg til bibliotek som library dependency.
Webprogrammering (LO113A) 1 Kom i gang med PHP. Webprogrammering (LO113A) 2 Mål  Installere Apache og PHP  Konfigurasjon av Apache og PHP  Forstå samspillet.
JSP presentasjon Arild Strømhylden NTNU 26 June 2014.
Nettvett.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Beslektede algoritmer. Isolere klient fra algoritme  Klienter trenger av og til helt forskjellige måter å gjøre det samme på  Men klienten selv kan.
Operativsystemer.  En prosess kan sees på som et stykke arbeid som skal utføres på datamaskinen.  Ofte vil det være flere prosesser/tråder på datamaskinen.
Objekt, Instanser og referanser + litt til. Objekter  Instanser  En instans er et objekt av en bestemt klasse  Instanser blir laget ved å kalle klassens.
Objektorientert programmering i PHP del 2
IS-102 Klassedefinisjoner
Bakgrunn. Funksjoner. Nøkkelfunksjoner. Application Manager. View Controller. Validation. Dialog Manager. Clay. Tiger extensions.
C# for javaprogrammerere
Forside Korteste sti BFS Modifikasjon Dijkstra Eksempel Korrekthet Analyse Øving Spørsmål Dijkstras algoritme Åsmund Eldhuset asmunde *at* stud.ntnu.no.
Dijkstras algoritme Åsmund Eldhuset asmunde *at* stud.ntnu.no
Kompleksitetsanalyse
Android-Programmering Våren Oversikt – PendingIntents Rollen til PendingIntents Vanlig bruk Deling Sending.
Android-Programmering Våren Oversikt Ytelse vs responsivitet Strategier for og opprettholde responsiviteten Tråder Asynchronous Task.
Fag LO189D - Objektorientert programmering Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 11 Applet’s Hva karakteriserer applet’sside.
Combining Compound Conceptual User Interface Components with Modelling Patterns - a Promising Direction for Model-based Cross-platform User Interface Development.
Gruppe 3 – Presentasjon 2 Henning Kristiansen, Mats Lindh, André Hauge og Vegard Simensen.
Singleton & Adapter Pattern Gruppe 3. Singleton Pattern Sørger for at en klasse kun kan ha en instans Vanligvis implementert med globale variabler –Singleton.
Object Oriented Measurement
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Objektorientert programmering
1 Organisering av kode (Kapittel 5). 2 Mål ● Forstå inkludering er og hvilken gevinst det gir ● Lære å utvikle egne funksjoner ● Forstå variablenes virkemåte.
Høgskolen i Oslo Web-programmering Feilhåndtering i PHP.
Høgskolen i Oslo Webprogrammering Ajax og PHP. I dag l Hvordan få en bedre brukeropplevelse via Ajax- script l Gjennomgang av kode l Oppgaveløsning på.
Dynamiske nettsider PHP Del 2 – Kontrollstrukturer.
Dynamiske nettsider PHP Del 1 – variable. PHP  PHP (Personal Home Page)  Fritt tilgjengelig programmeringsspråk  åpen kildekode  Plattformuavhengig.
DOM og scripting Making it come alive. Hva er DOM? Standard for å definere trestrukturen til XML-dokumenter. IDL-spesifikasjon av grensesnitt, egenskaper.
PARLAY/OSA Referanser: Referanser Foredraget er i all hovedsak basert på to artikler. Disse kan finnes på:
Hvordan kan foreldre bruke de vangligste funksjonene i Itslearning.com
VI LAGER EN PLATEBUTIKK
The Peer-to-Peer Architecture Av Ingunn Lund og Anja Lønningen.
CARISMA Context-Aware Reflective Middleware System for Mobile Applications.
Oppgaver til kodegenerering etc. INF-5110, 2013 Oppgave 1: Vi skal se på koden generert av TA-instruksjonene til høyre i figur 9.10 i det utdelte notatet,
Eziz Annagurban Veiledere: Sven-Olai Høyland Carsten Helgesen
Tabeller Dette er en tabell, eller array. Den kan defineres sånn som dette: public int[] heltallsTabell = new int[11]; //Her er 11 tabellens lengde for.
Jæger: Robuste og sikre systemer INF150 Programmering Kapittel 2: Problemløsning Kapittel 3.1 og 3.2.
Parallellisering av Coin3D for Systems in Motion av Sveinung Thunes.
11. Balancing technology with people’s needs Bruk av teknologi.
Objekt, Instanser og referanser + litt til. Objekter  Instanser  Kan sees på som det samme. Personen Per kan være både et objekt og en instans av klassen.
Grunnleggende opplæring i nettpublisering Innføring ved tildeling av publiseringsrettigheter 2015 Seksjon for kommunikasjon og studentinformasjon.
Android-Programmering Våren Introduksjon ActionBar Behovet for forandring Hva er Android ActionBar Tilpasning av ActionBar ActionBar - versjonshåndtering.
Opplæring: Pålogging Prosedyre for logge på og av, låse og åpne PC’er DatoVersjonForfatterGodkjent avEndringer utført André S. MathiesenTore.
Vibeke IT-seksjonen LU - LUVIT brukere våren PUS Luvit undervisning våren 2002 Hvordan lære opp studentene i LUVIT?
Ekstra mange tips til Oblig 3! 12. mars 2007 Are Magnus Bruaset og Arild Waaler Inst. for informatikk, UiO.
INF1000 (Uke 14) Eksamen V06 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Arild Waaler.
VirusLab Utvikling av en profesjonell applikasjon.
Kapittel 4 Skriving av klasser. 4.1 Anatomien til ein klasse Så langt har vi brukt ferdige klasser frå klassebiblioteket i Java Vi lagar objekt og brukar.
Kapittel 9 Polymorfi. 9.1 Sein binding Ofte er det perfekt match mellom typen til ein variabel og objektet han refererer til ChessPiece bishop;... bishop.
Kapittel 23 (Big Java 2.utg) Tråder. Kjøring av tråder Ein tråd er ein del av eit program som blir eksekvert uavhengig av andre deler av programmet Vi.
Kapittel 7 Array (lister og tabellar). 7.1 Arrayelement Array (lister, tabellar) er kjent frå VB Blir brukt til å organisere data når vi har mange dataelement.
Android-Programmering Våren Oversikt Long-running operasjoner Introduksjon til Android services On-demand service Bruk av servicer på tvers av prosesser.
Android Programmering 10 timers kurs. Forutsetninger Noe bakgrunn i Java eller et annet objektorientert språk Litt peiling på XML Vi bruker Windows 7.
Android-Programmering Våren Oversikt – PendingIntents  Rollen til PendingIntents  Vanlig bruk  Deling  Sending.
Android-Programmering Våren Introduksjon ActionBar  Behovet for forandring  Hva er Android ActionBar  Tilpasning av ActionBar  ActionBar - versjonshåndtering.
Android-Programmering Våren Oversikt Ytelse vs responsivitet Strategier for og opprettholde responsiviteten Tråder Asynchronous Task.
Kom i gang med Python Pål Hellesnes SYSTEMUTVIKLER
Android-Programmering
Android-Programmering
IN3030 – Effektiv parallellprogrammering Uke 1 2. del, våren 2019
Utskrift av presentasjonen:

Android-Programmering Våren 2015

Oversikt Ytelse vs responsivitet Strategier for og opprettholde responsiviteten Tråder Asynchronous Task

Ytelse vs responsivitet Forskjellen på ytelse og responsivitet Ytelse: Hvor raskt er det? Responsivitet: Hvor raskt føles det? I brukerorienterte applikasjoner er responsiviteten viktig

Android Oppbygning De fleste applikasjone følger samme oppbygning Instans av Application klassen En eller flere instanser av Activity klassen Flere instanser av View klasser Meny Alt dette kjører i en tråd (Main Thread) Activity, Views, menyer og event handlers

Android Responsivitet Må holde hovedtråden «åpen» for event handeling < 200ms Helst < 100ms Activity Manager og Windows Manager Rensponsivitet og ANR (Application Not Responding) errors Grense på 5 sekunder i hovedtråden

Strategier for og opprettholde responsiviteten Unngå blokkerende operasjoner i hovedtråden Bruke ekstra tråder Bruke servicer

Detektere potensielt blokkerende oppgaver Unngå blokkerende operasjoner i hovedtråden Ingen filsystemoperasjoner Ingen nettverksoperasjoner Vanskelig og vite hva andre bibliotek og API’er gjør Strictmode class kan hjelpe Detektere operasjoner Vanlig å bruke enableDefaults Bruk bare under utvikling

Tråder Ekstra tråder Bra til potensielt blokkerende oppgaver Nyttig til mindre oppgaver Fra 100ms til noen få sekunder Problematisk til oppgaver lenger enn noen få sekunder Kan bli drept

Opprette tråder Bruk Thread klassen til å lage nye tråder Lag en instans av Thread klassen Send inn en implementasjon av Runnable interfacet til Thread konstruktøren Kall Thread.Start De samme trådproblemene gjelder Unngå race conditions Unngå fellesbruk av verdier Unngå å lage mange små tråder ofte

Tråder og brukergrensesnittet Kun trygg oppdatering av brukergrensesnitt fra hovedtråden Helpemetoder Activity.runOnUiThread View.post

Prisen for dedikerte tråder Dedikerte tråder er ikke nødvendigvis beste valget for å forbedre responsiviteten Koster en del ressurser og lage/bryte ned en tråd Mye boiler-plate kode

Asynchronous tasks AsyncTask klassen Designet spesifikt for og opprettholde responsiviteten Deler opp arbeidet Hente informasjon fra brukergrensesnittet og hovedtråden: onPreExecute Arbeid i en tråd i bakgrunnen: doInBackground Oppdatere brukergrensesnittet i hovedtråden: publishProgress/onProgressUpdate Når arbeidet er ferdig, oppdater brukergrensesnittet: onPostExecute Kjører sekvensielt Bedre ressursbruk enn dedikerte tråder Kan bli drept

AsyncTask AsyncTask er en generisk klasse Spesifiserer parametere ved bruk av generiske argumenter til AcyncTask Tillater 3 typer parametere Parametertypen som blir akseptert av execute metoden Blir sendt internt til doInBackground Blir sendt inn som en liste med variabel lengde Parametertypen som sendes fra doInBackground til publishProgress Samme parameter blir sendt internt til onProgressUpdate Blir sendt inn som en liste med variabel lengde Return type fra doInBackground Blir sendt til onPostExecute som en enkelt parameter

AsyncTask thread pool API level 1-3 (Android 1.0 til 1.5) Tasks blir kjørt sekvensielt API level 4-8 (Android 1.6 til 2.2) Tasks kan bli kjørt paralellt API level 9 (Android 2.3) Alltid kjøre sekvensielt AsyncTask.executeOnExecutor AsyncTask.SERIAL_EXECUTOR Sekvensielt AsyncTask.THREAD_POOL_EXECUTOR Paralellt

Oppsumering Proritere brukergrensesnitt responsivitet Begrens event handler kode på hovedtråden til 100 ms Ikke utfør potensielt blokkerende operasjoner Bruk StrictMode klassen for å avdekke disse operasjonene Bruk AsyncTask til å frigjøre UI tråden Tåder og AsyncTask kan bli drept

AsyncTask Oppgave Lag en AsyncTask klasse som gjør en jobb som oppdaterer ett TextView Skal ha 4 oppdateringer med 3 sek delay mellom hver «Starting» «Retrieved movie data» «Movie data parsed and stored» «Done» Når jobben er ferdig skal «Finished» vises, hvis noe har feilet «Error»

AsyncTask - extended Bruk eller en annen side som gir deg en eller annen form for JSON tilbake i AsyncTask implementasjonenhttp:// Parse JSON resultatet og vis noe av informasjonen på siden