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

Slides:



Advertisements
Liknende presentasjoner
Høgskolen i Oslo Webprogrammering Tilstandsbevaring Sessions og cookies.
Advertisements

“UNDER THE KNIFE” Et planleggingssystem for operasjonsavdelingen Fylkessykehuset i Molde Prototype for planlegging, logistikk, og kostnads estimering.
Opplevd kvalitet og målt kvalitet: Brukerundersøkelser: Målgruppe: - brukere av hjemmetjenesten (18 indikatorer) - beboere på inst. (24.
Slik kommer du til «Personverninnstillinger»: Logg inn på Facebook.
Endringsstyring Change Management.
Tørkeparti PM 5.
Gruppe 6 Gunnar Henrik Mathias Morten Ronny Svein Ivar.
Begrenset redigering “Klubbjournalister” For web ansvarlig klubb.
Objektorientert programmering i PHP del 2
Tidplusstid OPPLÆRING
Levende HMS-system – hva betyr det i praksis?
EcmaScript 5 Arrays Demonstrasjon av ny funksjonalitet støttet i IE 9.
Java Server Faces (JSF) en introduksjon Frode Eika Sandnes.
Bakgrunn. Funksjoner. Nøkkelfunksjoner. Application Manager. View Controller. Validation. Dialog Manager. Clay. Tiger extensions.
Aksess kontroll None shall pass.
13. februar 2004TDT4285 Planl&drift IT-syst (M15)1 Automatisering TDT4285 Planlegging og drift av IT-systemer Anders Christensen, IDI.
23. januar 2004TDT4285 Planl&drift IT-syst1 Tjeneroppgraderinger TDT4285 Planlegging og drift av IT-systemer Anders Christensen, IDI.
Grunnleggende testteori
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.
ANDROID-PROGRAMMERING VÅREN ACTIVITY OG INTENTS Repetisjon fra forrige gang.
Jæger: Robuste og sikre systemer INF150 Programmering mandag 2.10 Default values – standardverdier ved oppstart MER OM: Sub-prosedyrer og sub-funksjoner.
Læring og tenkning Systemutvikling er læring Gjensidig respekt og samarbeid Følge en konkret oppskrift Velge blant flere oppskrifter Nå målet uten oppskrift,
Strukturerende elementer i UML
Empiriske metoder Oppgaveanalyse, observasjon
8.4 Sikkerhetshåndtering Nøkkelhåndtering Gruppe av servere skal legge til et nytt medlem Autentisering/delegering (kapabiliteter, sertifikater)
Singleton & Adapter Pattern Gruppe 3. Singleton Pattern Sørger for at en klasse kun kan ha en instans Vanligvis implementert med globale variabler –Singleton.
Læring prosjektpraksis Førsteamanuensis Prosjektledelse,
INF 295 Algoritmer og datastrukturer Forelesning 10 Invarianter og Hashing Hans Fr. Nordhaug (Ola Bø)
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å.
Skjema/Forms HTML II IT og læring 2/20 november 2001.
Dynamiske nettsider PHP Del 2 – Kontrollstrukturer.
Dynamiske nettsider PHP Del 1 – variable. PHP  PHP (Personal Home Page)  Fritt tilgjengelig programmeringsspråk  åpen kildekode  Plattformuavhengig.
ATP modellen Datakvalitet – enkle kontrollrutiner.
Hvordan kan foreldre bruke de vangligste funksjonene i Itslearning.com
Problemstyring Problem Management
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,
KONFIDENSIELT. Distribusjon bare til partnere i henhold til avtalen om taushetsplikt. Microsoft gir ingen uttrykte eller underforståtte garantier. © 2012.
1 Java Database Connectivity (JDBC) Norvald H. Ryeng
Objektorientert utforming In 140 Sommerville kap. 12.
Android-Programmering Våren Introduksjon ActionBar Behovet for forandring Hva er Android ActionBar Tilpasning av ActionBar ActionBar - versjonshåndtering.
Main metoden n public static void main(String[] args){ } n Inni denne metoden skjer alt! n Det kan bare finnes en main metode per program. n Den kan ligge.
Android-Programmering Våren Oversikt Ytelse vs responsivitet Strategier for og opprettholde responsiviteten Tråder Asynchronous Task.
POS Runner Pål Foros POS Runner Pål Foros. side 2 POS Runner :: Oppgavestiller EDB Business Partner er en ledende nordisk IT- operatør. Avdelingen som.
Ekstra mange tips til Oblig 3! 12. mars 2007 Are Magnus Bruaset og Arild Waaler Inst. for informatikk, UiO.
Klasse: 2HKI Student: Bertil Gjerstad Oppgnr: 25E
Byggeklosser i java  Klassedefinisjon  Variabel deklarasjon  Metodedeklarasjoner  En ordentlig klasse  Spesielle/kryptiske skrivemåter  løkker og.
Beredskap Risikohåndtering, kontinuitets- og katastrofeplaner.
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.
Objektorientert design In 140 Sommerville kap 12 – del 1.
Operasjonsanalytiske emner Prognosemodeller basert på Tidsserieanalyse Rasmus RasmussenBØK710 OPERASJONSANALYTISKE EMNER1 Del 23Forecasting 1 - Mønster.
Teknologi. Simulator oversikt Nettverk Kontroll- systemer Subsea Muligheter for egenproduserte kontrollsystemer for Fugro-verdenen Større mulighet.
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.
Sudoku Mål: Lage et enkelt system som løser Sudoku-oppgaver.
Android-Programmering Våren Oversikt Ytelse vs responsivitet Strategier for og opprettholde responsiviteten Tråder Asynchronous Task.
Activity og Intents Activity Intent
Triks Avslutt alle klasser, metoder og løkker samtidig som du lager dem. Deklarer alle variablene/referansene på begynnelsen av klassen. Hvis du definerer.
VIS DETTE LYSBILDET: INTRODUKSJON
Android-Programmering
MBN, USSD og stjerne/firkant koder 15.mai Kåre Aunan
INF5110 – 5. og 7. mai 2015 Stein Krogdahl, Ifi, UiO
IS-102 Interaksjon med objekter
Opplæring SAP Portalen
Nye trender Vi skal se på Virtualisering ”Cloud computing”
Prevas Connector og WHM versjon 4.0
IN3030 – Effektiv parallellprogrammering Uke 1 2. del, våren 2019
For, While, prosedyrer m/ parametere, funskjoner
Utskrift av presentasjonen:

Android-Programmering Våren 2015

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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