Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Android-Programmering Våren 2015. Oversikt Long-running operasjoner Introduksjon til Android services On-demand service Bruk av servicer på tvers av prosesser.

Liknende presentasjoner


Presentasjon om: "Android-Programmering Våren 2015. Oversikt Long-running operasjoner Introduksjon til Android services On-demand service Bruk av servicer på tvers av prosesser."— Utskrift av presentasjonen:

1 Android-Programmering Våren 2015

2 Oversikt Long-running operasjoner Introduksjon til Android services On-demand service Bruk av servicer på tvers av prosesser

3 Long-running operasjoner Hva mener vi med dette? Virker subjektivt? Har en spesifik betydning i Android En operasjon som tar lang nok tid til at en bruker kan ha byttet applikasjon

4 Android prosesshåndtering Android har ansvaret for opprettholde et responsiv brukeropplevelse Begrensede ressurser Android må jevnlig terminere prosesser Prosessen brukeren benytter er prioritert

5 Tråder og long-running operasjoner Tråder alene kan ikke håndtere long-running operasjoner pålitelig Tråder i en Activity er bare viktig for aktiviteten En Activity prosess kan avsluttes hvis brukeren bytter Er ikke garantert at tråden blir ferdig Trenger en måte og prioritere oppgaver uten brukergrensenitt

6 Android Servicer Service er en component type i Android Finnes for å utføre long-running operasjoner som ikke går på UI’et Høy prioritet Foran det meste annet enn prosessen brukeren benytter nå Mulig og elivere en service

7 Service kategorier Finnes 2 generelle kategorier Started Servicer Kontroll over sin egen livssyklus Begrenset interaktivitet med andre komponenter De fleste servicer er started servicer Bound Servicer Livssyklus direkte knyttet til komponenten som benytter den Har mye interaktivitet med komponenten som benytter den

8 Lage en enkel service Letteste on-demand started service Starter når en forespørsel blir sendt Kjører så lenge forespørselen blir prosessert Avslutter når den er ferdig IntentService

9 Håndterer mye av kompleksiteten til servicer Gjemmer mange av funksjonene til servicer Håndterer køer av long-running operasjoner Lager en enkel tråd når startService blir kjørt Får den flere kall til startService blir dette arbeidet utført sekvensielt Når en alt er utført, avsluttes den

10 Lage en IntentService basert Service Opprette klasse som arver fra IntentService Konstruktør som kaller IntentService til konstruktør Override IntentService.onHandleIntent Utfører arbeidet Registreres i manifestfilen

11 Aksessere en on-demand Service Lag en intent med en referanse til Service komponent klassen Hvis du ønsker så sende parametere, bruk Intent.putExtra Kall Context.startService med intenten Kan kjøre startService flere ganger

12 Servicer på tvers av prosesser Seriver er en sentralisert måte å utføre long-running operasjoner Unngå å tenke på Servicer som tråder Er en Android component type Bruker en eller flere tråder til å utføre arbeidet Kjører i prosessen den blir opprettet i Kan bli kallt av andre komponenter i samme prosess Kan bli kallt av komponenter i en annen prosess Kan håndere flere forespørsler fra forskjellige prosesser samtidig

13 Gjøre Service tilgjengelig for andre prosesser Sette opp ett intent filter Vil vanligvis bruke en Action test Er en definert string Bruker som oftest pakke navnet Filteret kan inneholde Category og/eller Data tester Kan inneholde flere intent filtere Android matcher en intent med intent filteret Starter service prosessen hvis nødvendig Hvis den kjører brukes instansen som finnes Intent sendes inn til servicen

14 Oppsumering Tråder alene kan ikke håndtere long-running operasjoner pålitelig Servicer er en pålitelig måte å kjøre long-running operasjoner Bruk IntentService til å implementere on-demand Started Servicer Started servicer aksesseres ved hjelp av startService og en Intent Intent til servicer i samme prosess trenger bare service klassen Kall til servicer på tvers av prosesser krever Intent Filter

15 Oversikt Service livssyklus Service og tråder Ta kontroll over livssyklusen

16 Service livssyklus Started service kan styre sin egen livssyklus Ikke begrenset til enkle oppgaver Kan fortsette og kjøre for å respondere raskere Kan ha funksjoner som er mer brukerorientert

17 Service klassen Arver fra Service klassen IntentService inneholder en standardimplementasjon for de fleste metoder Service livssyklusen eksponeres gjennom 3 metoder onCreate Kalles når Android lager servicen Kalles bare en gang onStartCommand Kalles hver gang en annen component kaller Context.startService Kan kalles mange ganger onDestroy Kalles for å si at en service blir avsluttet Component kalles av Context.StopService eller service kaller stopSelf Kan også kalles av systemet for å frigi ressurser

18 Started service livssyklus Service Component 1 kaller startService Component 2 kaller startService onCreateonStartCommand Component N kaller stopService onDestroy stopSelf

19 Implementering av started service livssyklusen Arver fra Service klassen Override onCreate Initialiseringen av Service klassen Override onStartCommand Initialiser spesifik request behandling Vil vanligvis utføre arbeidet i en bakgrunnstråd Returner et flag som indikerer forventningene til systemet Override onDestroy Opprydding Override onBind Brukes ikke i started servicer Return null Legg til i Android manifest

20 Servicer og tråder Kjører i hovedtråden Den samme tråden som UI’et kjører på Du har ansvaret for å sette opp arbeidet i en annen tråd Kan lage tråder eksplisitt Kan benytte en av klassene som implementerer ExecutorService

21 Ta kontroll over livssyklusen En service har 2 mekanisker for å håndtere sin egen livssyklus stopSelf En service kan gjøre eksplisitte, eller betingede stopp onStartCommand Returnerer verdi som indikerer hva systemet skal gjøre hvis prosessen blir drept

22 Stop-self Eksplisitt Service kaller stopSelf Systemet kaller onDestroy med en gang og avslutter servicen Betinget Service kan indikere at den vil stoppe hvis den ikke har noe arbeid som venter Hvert kall til onStartCommand inkluderer en request id stopSelfResult tar request id Stopper bare hvis det ikke er noen request som venter

23 Operativsystemets kontroll over livssyklusen onStartCommand - Returnerer verdi som indikerer hva systemet skal gjøre hvis prosessen blir drept Kontrollerer automatisk restart av service Kan restarte når ressurser blir tilgjengelige igjen Kan vente til neste kall til startService Kontrollerer hva som sendes til onStartcommand når en restart blir gjort Kan f.eks. Sende siste intent på nytt

24 onStartCommand return verdier Finnes 4 forskjellige START_NOT_STICKY Hvis servicen blir drept, ikke start igjen før startService blir kallt START_STICKY Hvis service blir drept, restart automatisk når ressurser er tilgjengelig Sender en null intent til onStartCommand START_REDILEVER_INTENT Hvis service blir drept, restart automatisk når ressurser er tilgjengelig Sender siste intent som ble sendt før den ble drept START_STICKY_COMPATIBLITY Kompatabilitet med Android 1.6 og tidligere

25 Velge riktig onStartCommand return verdi START_NOT_STICKY Mindre viktige servicer START_STICKY Hvis du ønsker at servicen skal forbli aktiv Gjør gjerne noe mer enn enkel request håndtering START_REDILEVER_INTENT Servicer som er «request-oriented» onStartCommand flag parameter indikerer om en intent sende inn på nytt START_FLAG_REDELIVERY Servicen returnerte fra onStartCommand, men kallte aldri stopSelfResult Pass på hvis det skaper problemer og håndtere samme intent flere ganger

26 Oppsumering Servicer kan håndtere sin egen livssyklus Servicer kjører i utgangspunktet på hovedtråden Servicer er ansvarlig for å sende arbeid til bakgrunnstråder onStartCommand return verdi kontrollerer hva som skjer hvis servicen blir drept


Laste ned ppt "Android-Programmering Våren 2015. Oversikt Long-running operasjoner Introduksjon til Android services On-demand service Bruk av servicer på tvers av prosesser."

Liknende presentasjoner


Annonser fra Google