Android services

1,314 views

Published on

Lecture slide

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,314
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
6
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Android services

  1. 1. Android storitve Jernej Virag Jernej Virag | @jernejv | http://www.virag.si 1
  2. 2. Nameni Intentshttp://developer.android.com/guide/topics/intents/intents-filters.html Android storitve 2
  3. 3. Zakaj? Sporočila Sporočila med aktivnostmi, storitvami in sprejemnikiAndroid storitve 3
  4. 4. Intent Instanca razreda IntentAndroid storitve 4
  5. 5. Kaj je v intentu? Ukaz (action) ACTION_CALL, ACTION_EDIT, ACTION_SCREEN_ONAndroid storitve 5
  6. 6. Kaj je v intentu? Podatki (data)Android storitve 6
  7. 7. Kaj je v intentu? Kategorija (category) CATEGORY_BROWSABLE, CATEGORY_HOMEAndroid storitve 7
  8. 8. Kaj je v intentu? Ime komponente com.example.applicationAndroid storitve 8
  9. 9. Klicanje intentaVrste klicev• startActivity()• startService() / bindService()• sendBroadcast() / sendOrderedBroadcast() Android storitve 9
  10. 10. Klicanje intentaAndroid storitve 10
  11. 11. Razreševanje intentovVrsti intentov• Eksplicitni (namenjeni točno določeni komponenti)• Implicitni (namenjeni katerikoli komponenti z določeno lastnostjo) Android storitve 11
  12. 12. Sprejemanje intentov Intent filtri Definirani z <intent-filter> v AndroidManifest.xmlAndroid storitve 12
  13. 13. Sprejemanje intentov Broadcast receiverji Definirani z <receiver> v AndroidManifest.xml Implementirani kot podrazred BroadcastReceiver z onReceive()Android storitve 13
  14. 14. Sprejemanje intentovAndroid storitve 14
  15. 15. Uporabni vgrajeni intenti• ACTION_VIEW – odpri za ogled• ACTION_DIAL – odpri telefonsko aplikacijo s številko• ACTION_SEND – pošlji podatek • za „share“ funkcionalnost s pomočjo createChooser()• Broadcast dogodki za praktično vso dogajanje na sistemu (http://developer.android.com/reference/android/content/Intent.html) Android storitve 15
  16. 16. Storitve Serviceshttp://developer.android.com/guide/topics/fundamentals/services.html Android storitve 16
  17. 17. Storitve Edine v ozadju Najboljše za kratki časAndroid storitve 17
  18. 18. Ustvarjanje storitvePodrazred razreda Service Implementacija onStartCommand() ali onBind()Android storitve 18
  19. 19. Vrste storitevZagnana Povezana (bound)• Načeloma izvede eno operacijo / • Je povezana z drugo/imi ukaz in se zaključi komponento/ami• Ne vrača rezultata o zagonu • Teče samo dokler je povezana s čimerkoli• Lahko teče neomejeno časa • Lahko uporablja mehanizme za• Ponavadi se uporablja za komunikacijo z povezanimi enkratne operacije – nalaganje komponentami datotek na strežnik ipd. • Implementacija onBind()• Implementacija onStartCommand() • Zagon z bindService()• Zagon z startService() Android storitve 19
  20. 20. Vrste storitevAndroid storitve 20
  21. 21. Zagnana storitev onStartCommand() vrača vrednost START_STICKY, START_NOT_STICKY, START_REDELIVER_INTENTAndroid storitve 21
  22. 22. Zagnana storitev OBVEZNO mora biti ustavljena Klic stopSelf() ali stopService()Android storitve 22
  23. 23. Povezana storitev onBind() vrača vrednost Instanco razreda IBinderAndroid storitve 23
  24. 24. Povezana storitevKomunikacija čez IBindertransact() za pošiljanje informacij, Binder.onTransact() za sprejemanjeAndroid storitve 24
  25. 25. Storitve Storitve NE tečejo na drugi niti Potencialno lahko blokirajo glavno nit prikazane aktivnostiAndroid storitve 25
  26. 26. Storitve Komunikacija z toast-i ali obvestili Razreda Toast in NotificationAndroid storitve 26
  27. 27. Zagon storitev• Z obstoječe aktivnosti – v odgovor na uporabniško akcijo• Z broadcast receiver-ja – v odgovor na intent • npr. android.intent.action.BOOT_COMPLETED • uporaba AlarmManager za zagon po intervalu • Uporabite setInexact… ! Android storitve 27
  28. 28. StoritveAndroid storitve 28
  29. 29. StoritveAndroid storitve 29
  30. 30. Pošiljanje obvestil „Push“ na Android način – C2DMhttp://code.google.com/intl/sl/android/c2dm/Android storitve 30
  31. 31. ZahteveNa strani storitve• Sistem za registracijo naprav• Sistem za pošiljanje posameznih obvestilNa strani uporabnika• Android 2.2+• Naprava z nameščenim Android Marketom• Na napravi registriran veljaven Google račun Android storitve 31
  32. 32. Registracija Vaš strežnik 3. registration_id Google strežnikAndroid naprava Android storitve 32 * http://code.google.com/intl/sl/apis/accounts/docs/AuthForInstalledApps.html
  33. 33. RegistracijaNa strani storitve• Strežnik od Googla pridobi Client Auth Token• Client Auth Token mora biti priložen vsej komunikaciji z Google strežnikiNa strani Android naprave• Android sproži intent com.google.c2dm.intent.REGISTER• V odgovor dobi sprožen intent com.google.android.c2dm.intent.REGISTRATION• Z REGISTRATION intenta razbere svoj registration_id, ki ga potem mora sporočiti storitvi Android storitve 33
  34. 34. Pošiljanje obvestila 1. registration_id, GoogleLogin auth, data Vaš strežnik Google strežnikAndroid naprava Android storitve 34 * http://code.google.com/intl/sl/apis/accounts/docs/AuthForInstalledApps.html
  35. 35. Pošiljanje obvestilaNa strani storitve• Na googlov strežnik se pošlje POST zahtevek z naslednjo vsebino • registration_id - ID naprave, ki je prejemnik • collapse_key – identifikator za „prekrivanje“ sporočil • data.<ključ> - podatki – data se lahko pojavi večkrat z večimi ključi • Authorization: GoogleLogin auth=[AUTH] – Google registracijski ključNa strani Android naprave• Dovoljenje com.google.android.c2dm.permission.RECEIVE• Android sproži intent com.google.c2dm.intent.RECEIVE• V extras intenta so podani poslani podatki Android storitve 35
  36. 36. Staro in novo Orodja za podporo večih različicAndroid storitve 36
  37. 37. Staro in novo Android Support Libray Loaderji, Fragmenti, ViewPager na 1.6+ http://developer.android.com/sdk/compatibility-library.htmlAndroid storitve 37
  38. 38. Staro in novo ActionBarSherlock Actionbar API na 2.0+ http://beta.abs.io/Android storitve 38
  39. 39. Staro in novo NineOldAndroids Honeycomb animacije na 1.0+ http://nineoldandroids.com/Android storitve 39
  40. 40. ? Jernej Virag @jernejv http://www.virag.siAndroid storitve 40

×