1 / 30

Android-Programmering

Android-Programmering. Våren 2014. Oversikt – PendingIntents. Rollen til PendingIntents Vanlig bruk Deling Sending. Rollen til PendingIntents. Gjør sirkelen komplett Intenter gjør det mulig og benytte komponenter fra andre programmer

cleo
Download Presentation

Android-Programmering

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Android-Programmering Våren 2014

  2. Oversikt – PendingIntents • Rollen til PendingIntents • Vanlig bruk • Deling • Sending

  3. Rollen til PendingIntents • Gjør sirkelen komplett • Intenter gjør det mulig og benytte komponenter fra andre programmer • Trenger en sikker måte og deligereactions til disse • PendingIntents • Innkapsler en intent, og en action for å utføre den

  4. Vanlig bruk • Krever 3 enkle steg • Lage en Intent • getXXX for og pakke inn Intent i en PendingIntent • (Egne metoder for hver av standardkomponentene) • Sende PendingIntenten til ønsket komponent • Notifications, widgets, servicer, activities

  5. Innholdet i en PendingIntent • PendingIntent innkapsler alt for komponenten som oppretter den • Intent • Assosiert action • Identitet og rettigheter til komponenten som opprettet den • Komponentens package

  6. Synlighet • Innholdet i en PendingIntent er ikke synlig for andre applikasjoner • Deles ikke utenfor komponenten som laget den • Lagres i Android systemet • PendingIntent objektet inneholder bare en token til innholdet

  7. Deling • PendingIntent, som en referanse, tillater deling • Like PendingIntents får samme referanse • Begge må komme fra samme applikasjon • Blir sett på som like ved hjelp av Intent.filterEquals

  8. Flags • Flags i getXXX sier hva som skal skje med valg av referanse • Kan gjøre noen endringer til en eksisterende Intent • Kan lage nye referanser selv om de matcher en tidligere • Kan gjøre tidligere PendingIntents ugyldige

  9. Flags • FLAG_UPDATE_CURRENT • Hvis eksisterer, oppdater med extras fra den nye Intenten • FLAG_NO_CREATE • Ikke lag en ny • Returner en eksisterende, eller returner null • FLAG_CANCEL_CURRENT • Lag en ny • Hvis den matcher en eksisterende, kanseller denne • FLAG_ONE_SHOT • Kan bare sende en gang • Kan ha flere referanser • Hvis den matcher en eksisterende som ikke har flagget, lag en ny • Begge er gyldige

  10. Sende PendingIntent • Utføre oppgaven i en PendingIntent • Kalle send metoden, sender Intenten den inneholder • Finnes flere overload metoder • Kan gjøre noen modifiseringer av Intenten som sendes • Sette verdier som ikke er satt tidligere • Gjør modifiseringene med Intent.fillIn

  11. Oppsumering • Pakker inn en Intent og en assosiert action • Kjøres under identen til komponenten som oppretter • Innholdet i er ikke tilgjengelig fra applikasjoner • Flere referanser kan peke til samme PendingIntent • Bruk send metoden til å utføre PendingIntentactionen

  12. Notifications

  13. Oversikt • Bakoverkompatiblenotifications • Notifications med actions • Mer personlige notifications • Flere notifications • Expandablenotifications

  14. Lage en notification • Bruker builderpattern • Finnes to versjoner • Notification.Builder del av standard API’et • NotificationCompat.Builder del av v4 support library • Foretrekker NotificationCompat.Builder • Nedgraderer funksjonalitet etter behov • Krever inkludering av v4 support library

  15. Vanlige Notification Properties • Støtter 4 properties i alle Android versjonene • 3 elementer i UI’et • Small icon: Builder.setSmallIcon • Title: Builder.setContentTitle • Text: Builder.setContentText • Kan assosiere klikk action på en notification • Valgfritt på Android 3.0 (API 11) og nyere • Kreves på tidligere versjoner

  16. Legge til notification action • Brukere forventer at noe skjer når de trykker på en notification • Bruk setContentIntent • Action kan være hva som helst en Intent kan representere • Åpner vanligvis en Activity • Bruker en spesiell klasse kaldt PendingIntent • Pakker en Intent i en fremtidig action • Bruk PendingIntent.getActivity for å pakke inn en Activity Intent i en PendingIntent

  17. NotificationManager • NotificationManager gir tilgang til notification systemet • Er en systemservice • Bruk Context.getSystemService med Context.NOTIFICATION_SERVICE • Usenotify metoden for å vise notificationen • Må gi en instans av Notification klassen • En int verdi definert av applikasjonen • Kan også inkludere en tag • Kan oppdatere en notification ved å bruke samme id/tag • Fjern notification med cancel

  18. Mer kontroll • Android 3.0 (API 11) gir mer kontroll over notifications • Gir mulighet til å påvirke oppførselen til notificationene i listen • Kan gjøre dem mer informative • Hvis NotificationCompat.Builder blir disse ekstra funksjonene ignorert hvis de ikke er støttet

  19. Oppførsel i listen • Kontroller fjerning • Kontroller om den automatisk skal fjernes • Builder.setAutoCancel • Bør stort sett være true • Hindre brukere i å fjerne den • Builder.setOngoing • Sett bare hvis nødvendig • Kontrollere posisjon • Builder.setPriority • Vær forsiktig

  20. Mer informative • Kan gjøres mer informative • Kan ha et større ikon i tillegg • Builder.setLargeIcon • Kan plassere en teller i notificationen • Builder.setNumber • Kan vise en spesiell melding når den først vises • Builder.setTicker

  21. Expandable Notifications • Android 4.1 (API 16) introduserte expandablenotifications • Har et standard view og kan utvides til å vise mer info • Benytter style klasser inne i NotificationCompat klassen • Bruker Builder.setStyle til å assosiere med builder instansen • BigTextStyle klassen gir et større tekstfelt • BigPictureStyle klassen kan vise et bilde opp til 240dp høyt • InboxStyle klassen kan vise tekslinjer

  22. Oppsummering • Foretrekker NotificationCompat.Builder fremfor Notification.Builder • Small icon, Title, Text og action fungerer på alle versjoner • Bruker PendingIntents til å representere actions • Må ha action i versjoner < API Level 11 • API Level 11 gir mer kontroll • Kan kontrollere fjerning • Kan gjøre de mer personlig • API level 16 gir expandablenotifications • Kan inkludere mer informasjon • Kan utvide og minimere notificationen

  23. Oversikt • Notifications og activity navigering • Foreground servicer • Notification actions • Notifications – eget layout

  24. Notifications og activity navigering • Kan «ødelegge» navigering • Brukere har ofte en forventning av hvor back knappen fører • Ofte er en Activity dypt i hierarkiet • Notifications lager ikke en back historie

  25. Gjøre det konsist • Legge ved back stack informasjon til notificationen • Applikasjonen med activityen som kalles på ha activity hierarkiet i manifest • Må lagre activity hierarkiet i TaskStackBuilderinstanse • Lage PendingIntent med TaskStackBuilder

  26. Notification og servicer • Kan gi brukergrensesnitt til servicer • Åpner ofte aktiviteten som kontrollerer servicen • Notificationen kan fungere som et enkelt brukergrensesnitt • Servicer som bruker dette er ofte foreground servicer

  27. Foreground Servicer • Elevert service prioritet • Prioritet nesten på linje med applikasjonen brukeren interagerer med • Har en fast notification når den kjører • Ingen spesielle krav til notificationen • Blir en foreground service ved å kalle startForeground • Sender inn notification id og Notification instans • Forblir i forgrunnen til den avslutter eller stopForeground blir kallt • Servicer kan gå inn og ut av foreground staten

  28. Notification Actions • Actions gir knapper direkte i notificationen • Støtter Android 3.0 (API level 11) og høyere • Kan ha opp til 3 actions i en notification • Har et ikon og en tekst • Hver knapp bruker en egen PendingIntent • Dette er i tillegg til den «vanlige» • Unngå og bruke i applikasjoner som er satt til mindre enn API level 11 • Knappene vises kun som et hvitt felt

  29. Eget layout • Kan bruke en egen layout • Kan bruke de view hierarkier som får plass • Tvers av prosesser • Notification kjører på OS host process • View hierarki er i applikasjonens prosess • RemoteView gir mulighet til å sende view hierarkier på tvers av prosesser • Bruk NotificationCompat.Builder.setContent

  30. Oppsumering • Lag en konsistent oppførsel til back knappen • Bruk TaskStackBuilder for å lage back stacken • Krever at activityen som kjøres har en parent i manifestet • Notifications kan benyttes som et UI for servicer • Spesielt nyttig til foreground servicer • Notification actions lager knapper direkte i notificationen • Knytter ytterligere PendingIntent instanser til notificationen • RemoteView benyttes for egne notification layout

More Related