Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

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

Liknende presentasjoner


Presentasjon om: "Android-Programmering Våren 2015. Oversikt Ytelse vs responsivitet Strategier for og opprettholde responsiviteten Tråder Asynchronous Task."— Utskrift av presentasjonen:

1 Android-Programmering Våren 2015

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

3 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

4 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

5 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

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

7 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

8 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

9 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

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

11 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

12 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

13 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

14 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

15 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

16 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»

17 AsyncTask - extended Bruk eller en annen side som gir deg en eller annen form for JSON tilbake i AsyncTask implementasjonenhttp://www.it-stud.hiof.no/android/data/randomData.php Parse JSON resultatet og vis noe av informasjonen på siden


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

Liknende presentasjoner


Annonser fra Google