Laste ned presentasjonen
Presentasjon lastes. Vennligst vent
PublisertJohanne Ellefsen Endret for 7 år siden
1
Android-Programmering Våren 2016
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
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
Liknende presentasjoner
© 2024 SlidePlayer.no Inc.
All rights reserved.