Android       Threaduri, Servicii, AIDL                      Vlad PETRE               vlad@vladpetre.com          http://t...
Intai, cateva informatii preliminare2           Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Ierarhia de memorii                  Creste marimea                        Creste viteza3    Scoala de Vara IP Workshop 20...
Multitasking4   Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Starile proceselor5   Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Schimbarea de context    • Schimbarea programului curent de pe procesor      – Salvarea registrilor      – Salvarea setari...
Fire de executie (Threads)    • Forma de impartire a programului      – Mai multe cai de procesare      – Partajarea memor...
Implementarea in Java    • Prin extinderea clasei Thread      – Si suprascrierea metodei run()    • Prin implementarea int...
Metoda 1: extinderea clasei Thread9        Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Clasa Thread     class FirExecutie extends Thread     {         // … constructori, functii, etc.         public void run()...
Utilizarea clasei FirExecutie     class FirExecutie extends Thread     {        // … constructori, functii, etc.        pu...
Metoda 2: implementarea interfetei Runnable12            Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Interfata Runnable     class FirExecutie implements Runnable     {         // … constructori, functii, etc.         public...
Utilizarea clasei FirExecutie     class FirExecutie implements Runnable     {         // … constructori, functii, etc.    ...
Diferenta intre Runnable si Thread15           Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Diferenta intre Runnable si Thread     Runnable                                   Thread     •Interfata                   ...
Oprirea unui fir de executie     Doar cand se termina de executat setul de           instructiuni din metoda run()17      ...
Revenim la Android18   Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Procesarea în Activități     • Procesarea in activitati are loc in:        – Functiile activitatii            • onCreate(…...
Servicii     •   Componenta Android     •   Speciala pentru procesare     •   Ruleaza in fundal (background)     •   Prior...
Evenimente  21         Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Implementarea serviciilor     • Extinde clasa Service       – Serviciu simplu          • void onCreate();          • int o...
Servicii simple23   Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Implementarea unui serviciu     1.Extinderea clasei Service       – Implementarea metodelor       – Crearea unor fire de e...
Exemplu     • Afiseaza un numar prim pe secunda       – Serviciul nu porneste automat       – Serviciul nu se opreste auto...
Numere Prime - Serviciu26     Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Numere Prime–Thread efectiv     27                       Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Pornirea serviciului     • Intent starter = new Intent(context,                                      ClasaServiciu.class);...
Oprirea serviciului     • Doua metode:       – Intent intent = new Intent(context, ClasaServiciu.class);         context.s...
Servicii cu AIDL30   Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
AIDL     • Android Interface Definition Language       – RPC pentru Android     • Conexiune intre activitate si serviciu31...
Remote Procedure Call     • RPC este un mod de comunicare intre diferite procese, ce permit ca un program sa     apeleze s...
AIDL     •   Seamana cu Java     •   Declaratii identice     •   Tipuri de variabile limitate     •   Primare (int, long, ...
Exemplu: IServiciuFilme.aidl     package pdm.filme;     interface IServiciuFilme     {         Int numarFilme();         S...
AIDL => clasa     • IServiciuFilme.aidl       – IServiciuFilme.Stub          • Clasa abstracta cu functiile din Interfata3...
ListaFilme - Serviciu36   Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
ListaFilme – serviciul efectiv      37                         Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Conectare folosind AIDL38     Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Conectare folosind AIDL39     Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Bibliografie     •   http://pdm.ipworkshop.ro     •   http://download.oracle.com/javase/tutorial/essential/concurrency/   ...
Întrebări?41   Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Upcoming SlideShare
Loading in …5
×

[Curs Android] C10 - Threaduri & Servicii (IPW 2011)

1,414 views
1,339 views

Published on

These slides are part of the Android Development Course which I taught to 10 students, while participating in the IP Workshop Summer School 2011.
http://www.scoaladevara.info/2011/?page_id=39

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,414
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
49
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

[Curs Android] C10 - Threaduri & Servicii (IPW 2011)

  1. 1. Android Threaduri, Servicii, AIDL Vlad PETRE vlad@vladpetre.com http://twitter.com/vladpetre88 http://facebook.com/vladpetre88 http://www.linkedin.com/in/vladpetre881 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  2. 2. Intai, cateva informatii preliminare2 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  3. 3. Ierarhia de memorii Creste marimea Creste viteza3 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  4. 4. Multitasking4 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  5. 5. Starile proceselor5 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  6. 6. Schimbarea de context • Schimbarea programului curent de pe procesor – Salvarea registrilor – Salvarea setarilor de memorie6 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  7. 7. Fire de executie (Threads) • Forma de impartire a programului – Mai multe cai de procesare – Partajarea memoriei intre acestea • Variabilele sunt comune • Tipuri de fire de executie – User – Kernel7 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  8. 8. Implementarea in Java • Prin extinderea clasei Thread – Si suprascrierea metodei run() • Prin implementarea interfetei Runnable – Si implmentarea metodei run()8 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  9. 9. Metoda 1: extinderea clasei Thread9 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  10. 10. Clasa Thread class FirExecutie extends Thread { // … constructori, functii, etc. public void run() { // setul de instructiuni ce trebuie sa fie // executat de firul de executie } }10 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  11. 11. Utilizarea clasei FirExecutie class FirExecutie extends Thread { // … constructori, functii, etc. public void run() { // setul de instructiuni ce trebuie sa fie // executat de firul de executie } } FirExecutie fe = new FirExecutie(…); fe.start(); <-nu apelam direct metoda run()!!!11 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  12. 12. Metoda 2: implementarea interfetei Runnable12 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  13. 13. Interfata Runnable class FirExecutie implements Runnable { // … constructori, functii, etc. public void run() { // codul firului de executie separat } }13 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  14. 14. Utilizarea clasei FirExecutie class FirExecutie implements Runnable { // … constructori, functii, etc. public void run() { // codul firului de executie separat } } Thread fir = new Thread(new FirExecutie()); fir.start(); <-nu apelam direct metoda run()!!!14 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  15. 15. Diferenta intre Runnable si Thread15 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  16. 16. Diferenta intre Runnable si Thread Runnable Thread •Interfata •Clasa •Obiectul poate extinde •Obiectul trebuie sa extinda orice alta clasa clasa Thread •Doar implmenteaza •Mai putin flexibil interfata Runnable •Cod mai simplu •Mai flexibil •Cod putin mai complicat16 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  17. 17. Oprirea unui fir de executie Doar cand se termina de executat setul de instructiuni din metoda run()17 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  18. 18. Revenim la Android18 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  19. 19. Procesarea în Activități • Procesarea in activitati are loc in: – Functiile activitatii • onCreate(…) • onStart(…) • … – Funcțiile observatorilor • onClick(…) • Procesare putina!!! – Trebuie sa evitam starea de Not Responding • Solutia – Fire de executie – Servicii – AsyncTask19 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  20. 20. Servicii • Componenta Android • Speciala pentru procesare • Ruleaza in fundal (background) • Prioritate mai mica • Mai stabil (in timp) • Un serviciu ruleaza in threadul principal (threadul in care ruleaza si activitatile) in cadrul procesului aplicatiei sale. Componenta Service NU isi creaza propriul sau thread daca noi nu explicitam acest lucru.20 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  21. 21. Evenimente 21 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  22. 22. Implementarea serviciilor • Extinde clasa Service – Serviciu simplu • void onCreate(); • int onStartCommand(Intent intent, int flags, int startId); • void onDestroy(); – Folosind AIDL • void onBind(Intent intent); • void onUnbind();22 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  23. 23. Servicii simple23 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  24. 24. Implementarea unui serviciu 1.Extinderea clasei Service – Implementarea metodelor – Crearea unor fire de execuție 2.Declararea componentei Service in Manifest 3.Pornirea/oprirea – startService(…) – stopService(…)24 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  25. 25. Exemplu • Afiseaza un numar prim pe secunda – Serviciul nu porneste automat – Serviciul nu se opreste automat25 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  26. 26. Numere Prime - Serviciu26 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  27. 27. Numere Prime–Thread efectiv 27 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  28. 28. Pornirea serviciului • Intent starter = new Intent(context, ClasaServiciu.class); • context.startService(starter);28 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  29. 29. Oprirea serviciului • Doua metode: – Intent intent = new Intent(context, ClasaServiciu.class); context.stopService(intent); – stopSelf();29 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  30. 30. Servicii cu AIDL30 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  31. 31. AIDL • Android Interface Definition Language – RPC pentru Android • Conexiune intre activitate si serviciu31 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  32. 32. Remote Procedure Call • RPC este un mod de comunicare intre diferite procese, ce permit ca un program sa apeleze subrutine ale altui program.32 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  33. 33. AIDL • Seamana cu Java • Declaratii identice • Tipuri de variabile limitate • Primare (int, long, float, double, char, boolean) – String – List* – Map* – Tipuri special construite * Trebuie sa contina doar tipuri pentru AIDL33 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  34. 34. Exemplu: IServiciuFilme.aidl package pdm.filme; interface IServiciuFilme { Int numarFilme(); String titluFilm(intnumar); String regizorFilm(intnumar); }34 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  35. 35. AIDL => clasa • IServiciuFilme.aidl – IServiciuFilme.Stub • Clasa abstracta cu functiile din Interfata35 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  36. 36. ListaFilme - Serviciu36 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  37. 37. ListaFilme – serviciul efectiv 37 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  38. 38. Conectare folosind AIDL38 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  39. 39. Conectare folosind AIDL39 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  40. 40. Bibliografie • http://pdm.ipworkshop.ro • http://download.oracle.com/javase/tutorial/essential/concurrency/ • http://developer.android.com/guide/topics/fundamentals/services.html • http://developer.android.com/guide/developing/tools/aidl.html • http://developer.android.com/reference/android/app/Service.html40 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  41. 41. Întrebări?41 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea

×