18
Odsek za računarsku tehniku i računarske komunikacije Projektovanje namenskih ra čunarskih struktura 1 Sloj aplikacija

Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · muzike, preuzimanje podataka sa interneta, osluškivanje servisa sa interneta i sl.) U toku dizajna aplikacije,

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · muzike, preuzimanje podataka sa interneta, osluškivanje servisa sa interneta i sl.) U toku dizajna aplikacije,

Odsek za računarsku tehniku i računarske komunikacije

Projektovanje namenskihračunarskih struktura 1

Sloj aplikacija

Page 2: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · muzike, preuzimanje podataka sa interneta, osluškivanje servisa sa interneta i sl.) U toku dizajna aplikacije,

Arhitektura Androida

2020 2

App0 App1 App2 App3 App4

Application layer

Activity manager

Frameworks layerWindow manager

Content providers

View systemNotification

manager

Package manager

Resource manager

XMPP service

Surface manager

Runtime layer

OpenGL/ES

SGL

Media framework

Freetype

SSL

SQLite

Webkit

libc

Libraries Android runtime

CoreLibraries

Dalvik Virtual Machine (DVM)

Kernel layer

Display driver

USB driver

Mouse driver

Keyboard driver

Ethernet driver

WiFi driver

Flash memory driver

Audio drivers

Binder (IPC) driver

Power management

Hardware

Java

C, C

++, n

ativ

e co

de

Ass

emb

ler,

C

Graphics Audio Camera GPS ...

Hardware Abstraction Layer (HAL)

Sloj aplikacija je najviši sloj u arhitekturi Androida

Predstavlja skup svih aplikacija koje se izvršavaju na Androidu

Postoje sistemske, ugrađene i korisničke aplikacije

Sve aplikacije su u skladu sa ograničenjima koje nameće Android i razvojni alati

Android diktira kako se aplikacije mogu/moraju razvijati i ponašati

Page 3: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · muzike, preuzimanje podataka sa interneta, osluškivanje servisa sa interneta i sl.) U toku dizajna aplikacije,

Android aplikacije

Aplikacije mogu biti razvijane u raznim programskim jezicima Java, Kotlin, Dart, pa i C++

Filozofija Androida podrazumeva jednu aplikaciju preko celog ekrana

o Aplikacija može da ima više prozora (aktivnosti), ali je svaki preko celog ekrana

o Aktivnost jedne aplikacije mogu da koriste druge aplikacije (na primer, kameru, kontakte i sl. može da koristi svaka aplikacija)

Aplikacije mogu biti korisničke, ugrađene ili sistemske

Sistemske aplikacije po pravilu imaju više prava, i mogu koristiti i zaštićeni API

Složenija/zahtevnija obrada podataka se delegira nativnom sloju preko JNI (Java NativeInvocation/Interface) poziva

2020 3

Page 4: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · muzike, preuzimanje podataka sa interneta, osluškivanje servisa sa interneta i sl.) U toku dizajna aplikacije,

Vrste aplikacija i komponenti

Sa ciljem zadovoljavanja raznih potreba korisnika, u Android postoji nekoliko tipova komponenti aplikacijao Activity

Grafički element koji najčešće odgovara jednom ekranu

o Service

Uslužni procesi koji rade u pozadini

o ContentProvider

Elementi koji omogućuju deljenje podataka u sistemu

o BroadcastReceiver

Element koji prihvata sistemske broadcast poruke (battery low, itd.)

Razni tipovi se mogu koristiti u jednoj aplikaciji

Izbor tipa aplikacija zavisi od namene aplikacije ili komponente

2020 4

Direktno potiče iz dizajna!

Page 5: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · muzike, preuzimanje podataka sa interneta, osluškivanje servisa sa interneta i sl.) U toku dizajna aplikacije,

Životni ciklus aktivnosti

2020 5

Način ponašanja aplikacije je propisano mehanizmom (radni okvir) koji upravlja aplikacijama

Sva aplikacija prolazi kroz nekoliko stanja (elipse) i to je eksplicitno vidljivo u klasi koja realizuje Activity

Mehanizam se realizuje callback metodama unutar aplikacije (pravougaonici) , koje radni okvir poziva odgovarajućim redosledom

Na osnovu dešavanja u sistemu, radni okvir po potrebi poziva callback metode

o Na primer, kada se aplikacija prekrije drugom aplikacijom, radni okvir će pozvati metodu OnPause() iz prikazanog prozora (Activity)

Page 6: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · muzike, preuzimanje podataka sa interneta, osluškivanje servisa sa interneta i sl.) U toku dizajna aplikacije,

Dijagram stanja životnog ciklusa

2020 6

Drugačiji prikaz, iz perspektive stanja Predstavlja dobar primer dizajna i vizuelizacije

Page 7: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · muzike, preuzimanje podataka sa interneta, osluškivanje servisa sa interneta i sl.) U toku dizajna aplikacije,

Callback metode aplikacije

onCreate(): poziva se kada se aktivnost prvi put kreira. Ovde se inicijalizuje najveći deo varijabli. onStart() se uvek poziva posle ove metode.

o Sistem može da zatvori aplikaciju odavde: Ne.

o Sledeće: onStart().

onStart(): Poziva se kada aktivnost postaje vidljiva korisniku. Posle nje se poziva onResume().

o Sistem može da zatvori aplikaciju odavde : Ne.

o Sledeće: onResume().

onResume(): Poziva se kada je aktivnost na raspolaganju korisniku za interakciju.

o Sistem može da zatvori aplikaciju odavde : Ne.

o Sledeće: onPause().

onRestart(): Poziva se kada god je aktivnost bila zaustavljena, pa se pokreće (neposredno pre ponovnog pokretanja). onStart() se uvek sledeća poziva.

o Sistem može da zatvori aplikaciju odavde : Ne.

o Sledeće: onStart().

2020 7

Direktno potiče iz dizajna!

Page 8: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · muzike, preuzimanje podataka sa interneta, osluškivanje servisa sa interneta i sl.) U toku dizajna aplikacije,

Callback metode aplikacije

onPause(): Poziva se kada se sistem sprema da stavi neku drugu aktivnost preko ove, ili je korisnik pritisnuo Home taster, ili se aktivirao screen saver. U ovom trenutku se obično snimaju podaci koji moraju biti sačuvani. Ako se aplikacija vraća u svoju aktivnost (posle screen saver-a), poziva se onResume(); ako aktivnost više nije vidljiva za korisnika, poziva se onStop().

o Sistem može da zatvori aplikaciju odavde : Da.

o Sledeće: onResume() ili onStop().

onStop(): Poziva se kada aktivnost više nije vidljiva za korisnika (neka druga aktivnost je preuzela ekran). Ako se aktivnost više ne vraća (Back dugme u odnovnom ekranu aplikacije), poziva se onDestroy(); ako se aktivnost vraća (posle neke druge aktivnosti), poziva se onRestart().

o Sistem može da zatvori aplikaciju odavde : Da.

o Sledeće: onRestart() ili onDestroy().

2020 8

Page 9: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · muzike, preuzimanje podataka sa interneta, osluškivanje servisa sa interneta i sl.) U toku dizajna aplikacije,

Callback metode aplikacije

onDestroy(): Poziva se pre nego što se aktivnost uništi. Poziva se ako je korisnik zatvorio aplikaciju, ili ako je sistem odlučio da ubije aplikaciju (zbog resursa). Uzrok se može saznati pozivom metode isFinishing(). Metoda isFinishing() se može pozvati i unutar onPause() metode.

o Sistem može da zatvori aplikaciju odavde : Da.

o Sledeće: Ništa.

2020 9

Page 10: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · muzike, preuzimanje podataka sa interneta, osluškivanje servisa sa interneta i sl.) U toku dizajna aplikacije,

Ugrađeni način komunikacije - Intent

Intenti su namenski mehanizam za komunikaciju u Android sistemu. To su poruke (objekti) koji putuju kroz Android sistem i mogu se koristiti za:

o Poruke koje se mogu koristiti za startovanje aktivnosti

o Postoje i sistemske poruke koje šalje sistem, a aplikacije mogu da reaguju na njih (npr. BroadcastReceiver može da reaguje na startovanje sistema, gubitak internet veze i sl.)

o Mogu se iskoristiti kao mehanizam za međuprocesnu komunikaciju

o Aplikacije mogu same da osmisle i šalju svoje poruke (Intent) unutar sebe, za komunikaciju među različitim delovima aplikacije

2020 10

Page 11: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · muzike, preuzimanje podataka sa interneta, osluškivanje servisa sa interneta i sl.) U toku dizajna aplikacije,

Intent – najčešća upotreba

Najčešće se koristi za aktiviranje Aktivnosti (Activity)

Android sam uparuje aktivnost (Activity) na osnovu zadate poruke (Intent)

Elementi tipa Activity sami deklarišu koje poruke mogu/žele da primaju i obrađuju. Te informacije se zadaju u AndroidManifest.xml i Android sistem ih odatle čita.

Jedna aktivnost može da pozove drugu aktivnost

Ta druga aktivnost može da bude i ugrađena ili sistemska.

Na ovaj način, korisnička aplikacija može da koristi delove sistemskih aplikacija ili aplikacije u celini, da ih pozove po potrebi, i prosledi neki podatak. Tipičan primer je otvaranje kamere, podešavanja, itd.

Ponovna iskoristivost ugrađena u dizajn platforme!

2020 11

Page 12: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · muzike, preuzimanje podataka sa interneta, osluškivanje servisa sa interneta i sl.) U toku dizajna aplikacije,

Intent (primer)

2020 12

Page 13: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · muzike, preuzimanje podataka sa interneta, osluškivanje servisa sa interneta i sl.) U toku dizajna aplikacije,

Servisi Android aplikacija

Servisi su programske komponente koje obavljaju svoju funkciju u pozadini (puštanjemuzike, preuzimanje podataka sa interneta, osluškivanje servisa sa interneta i sl.)

U toku dizajna aplikacije, poznavajući zahteve aplikacija se deli da komponente.

Poznavajući osobine servise i zahteve pojedinih komponenti, neke komponente se mogu realizovati kao servis.

Servise je integralni deo aplikacije, i komunicira sa ostatkom aplikacije pomoću mehanizma udaljene sprege (IPC – InterProcess Communication) koja je specifična za datu aplikaciju.

IPC je opisana a u Androidu pomoću AIDL (Android Interface Definition Language) datoteka – više o tome u narednim slojevima Androida.

Pokretanje servisa je definisano odgovarajućim poljima AndroidManifest.xml

2020 13

Page 14: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · muzike, preuzimanje podataka sa interneta, osluškivanje servisa sa interneta i sl.) U toku dizajna aplikacije,

Tip komponente ContentProvider

Omogućuju deljenje podataka između aplikacija (npr. adresar, galerija slika, itd.)

Obezbeđuju uniformnu spregu za pristup podacima, kao i za brisanje, odnosno ažuriranjepodataka

Tipičan primer je galerija slika

Da bi se implementirao ContentProvider, potrebno je proširiti klasu

public class ExampleProvider extends ContentProvider

2020 14

Page 15: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · muzike, preuzimanje podataka sa interneta, osluškivanje servisa sa interneta i sl.) U toku dizajna aplikacije,

Tip komponente BroadcastReceiver

BroadcastReceiver su komponente koje reaguju na sistemske broadcast poruke (na primer battery low, primljen SMS, izgubljena mreža, sistem je startovan itd.), ili broadcastporuke drugih aplikacija.

BroadcastReceiver se eksplicitno registruje za poruke koje želi da prima ili u AndroidManifest.xml ili programski.

Broadcast poruke se prosleđuju kao objekti klase Intent

Koristi se za reakciju na retke poruke, nije preporučljivo koristiti BroadcastReceiver i broadcast poruke za učestalu komunikaciju.

Ove komponente obično nemaju svoj grafičku korisničku spregu (GUI), ali mogu da kreiraju obaveštenja u statusnoj liniji (status bar notification)

public class MyBroadcastReceiver extends BroadcastReceiver

2020 15

Page 16: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · muzike, preuzimanje podataka sa interneta, osluškivanje servisa sa interneta i sl.) U toku dizajna aplikacije,

Skladištenje podataka u Android aplikaciji

Postoji više opcija za skladištenje podataka:

Podešavanja (Preferences)

datoteka na disku

SQLite

ContentProvider

Uvek je potrebno odabrati mehanizam koji je najpogodniji datoj upotrebio Količina podatakao Brzina pristupao Potreba za stalnim čuvanjem

2020 16

Page 17: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · muzike, preuzimanje podataka sa interneta, osluškivanje servisa sa interneta i sl.) U toku dizajna aplikacije,

Skladištenje podataka u Android aplikaciji

Često postoji potreba da aplikacije skladište podatke koje su specifične za njih

Android platforma jasno propisuje načine skladištenja, sa ciljem da se osigura sigurnost i bezbednost podataka

Podaci aplikacija su izolovani

Moguće opcije za skladištenje

o Podešavanja (Preferences, SharedPreferences)

o Datoteka na flash memoriji

o SQLite baza podataka

Uvek je potrebno odabrati mehanizam koji je najpogodniji datoj upotrebi

o Količina podataka

o Brzina i način pristupa

o Potreba za stalnim čuvanjem

2020 17

Page 18: Projektovanje namenskih računarskih struktura 1 · 2020. 6. 28. · muzike, preuzimanje podataka sa interneta, osluškivanje servisa sa interneta i sl.) U toku dizajna aplikacije,

Rezime

Način na koji je dizajniran Android nameće ograničenja i pravila razvoja aplikacija

Ciljevi su:

o Što bolji korisnički ugođaj (UX – User eXperience), brži odziv sistema, efikasna upotreba resursa

o Bezbednost i sigurnost podataka i celog sistema

o Jednostavan razvoj aplikacija sa jasnim preporukama

Potrebno je dobro poznavati model životnog veka aplikacija za razvoj što kvalitetnije aplikacije, stanja aplikacije i prelaze između njih

Sa druge strane, model životnog veka predstavlja veoma dobar pristup opisu rada nekog sistema

Kao koncept, primenljiv je na širok niz problema (zajedno sa okolnim okruženjem)

2020 18