Sunteți pe pagina 1din 5

Un "Intent" este un obiect ce se foloseste pentru a solicita o actiune dintr-o alta componenta a

aplicatiei.Desi intenturile faciliteaza comunicarea dintre componentele aplicatiei in diferite


feluri,exista totusi trei cazuri fundamentale ale intrbuintarii acestora.

Pornind o activitate

O activitate reprezinta un singur ecran al aplicatiei.Poti porni o noua instanta a unei activitati
transmitand un Intent metodei startActivity().Intentul descrie activitatea ce se va incepe si retine
datele necesare.

Daca se doreste un rezultat in momentul terminarii activitatii,se va apela metoda


startActivityForResult().Activitatea va primi rezultatul ca un obiect Intent separat in apelul
metodei onActivityResult().

Pornind un serviciu

Un serviciu este o componenta care efectueaza operatii in background fara o interfata grafica.

Un serviciu se poate porni prin folosirea metodelor clasei Service.Se poate porni un serviciu care
efectueaza o singura operatie,spre exemplu descarcarea unui fisier, prin transmiterea
parametrului Intent metodei startService().Intentul descrie serviciul ce se va porni si retine
datele necesare.

Transmitand un broadcast

Un broadcast este un mesaj pe care orice aplicatie il poate primi.sistemul ofera multiple
broadcasturi pentru evenimente de sistem ,spre exemplu atunci cand device ul booteaza sau
este conectat la curent pentru incarcare.Pentru a transmite un broadcast catre alte aplicatii se
apeleaza metoda sendBroadcast() sau sendOrderedBroadCast() cu paramentrul Intent.

Tipuri de intent
Exista doua tipuri de intenturi:

Intentul explicit specifica componenta ce se va porni dupa nume.De cele mai multe ori
se va folosi un intent explicit pentru a porni o componenta in propria ta aplicatie pentru
ca se cunoaste numele clasei activitatii sau serviciului ce se vrea a fi pornit.Spre
exemplu,poti porni o activitate ca raspuns a unei actinui a userului sau pentru a porni o
descarcare in background.

Intentul implicit nu numeste o componenta specifica,ci declara o actiune generala ce se


va executa si care permite unei componente din alta aplicatie sa se ocupe de
aceasta.Spre exemplu,daca se doreste afisarea unei locatii pe harta,se poate folosi un
intent implicit care permite unei aplicatii cometente sa indeplineasca task ul respectiv.

Figura 1

Figura 1 exemplifica cum un intent este transmis pentru a porni o activitate.Cand se


creeaza un intent explicit pentru inceperea unei activitati sau a unui serviciu,sistemul
porneste imediat componenta aplicatiei specificata in obiectul Intent ului.

Cand se creeaza un intent implicit,sistemul Android gaseste cea mai in masura


componenta pentru a fi pornita prin compararea componentelor intentului cu filtrele
intent declarate in fisierul manifest al celorlalte aplicatii de pe device.Daca intentul
gaseste o potrivire cu filtrele respective atunci sistemul va porni acea componenta.Daca
mai multe filtre sunt compatibile atunci se va afisa o lista din care utilizatorul va alege o
aplicatie cu care se va incheia operatiunea.

Un filtru intent este o expresie in fisierul manifest al aplicatiei care specifica tipurile de
intenturi pe care componenta le suporta.Spre exemplu,declarand un filtru pentru o
activitate,oferi posibilitatea altor aplicatii sa porneasca activitatea ta prin intermediul
unor anumite intenturi.De asemeanea,daca nu se declara niciun filtru pentru o
activitate,atunci ea poate fi pornita doar cu un intent explicit.

Observatie! Pentru a te asigura ca aplicatia ta este sigura,foloseste intotdeana un intent


explicit pentru pornirea unui serviciu si nu declara flitre intent pentru serviciile
tale.Folosirea unui intent implicit reprezinta o slabiciune in ceea ce priveste securitatea
aplicatiei pentru ca nu poti fi sigur ce serviciu va raspunde intentului respeciv.

Declararea unui intent

Un obiect de tip Intent retine in principal informatiile pe care sistemul Android le


foloseste pentru a determina ce componenta sa fie pornita.
Principalele informatii continute de catre un Intent.

Numele componentei

Numele componentei de executat.

Acesta informatie este oprionala,dar reprezinta o informatie critica ce face un intent sa


fie explicit,insemnand ca un intent ar trebui sa fie trimis doar catre componenta definita
de numele acesteia.Fara acest nume,intentul este unul implicit si lasa sistemul sa decida
ce componenta ar trebui sa primeasca intentul respectiv pe baza celorlalte
informatii.Daca se doreste pronirea unei componente specifice in aplicatie,trebuie
specificat numele componentei.

Actiunea

Un sir de caractere care specifica actiunea generica de executat.

In cazul unui intent de broadcast,aceasta este actiunea ce s-a executat si care a fost
returnata.

Se pot specifica propriile actiuni ce vor fi folosite de Intenturi in interiorul aplicatiei


tale(sau folosite de alte aplicatii care apeleaza componente din aplicatia ta) dar de obicei
se specifica actiunile constante definite de clasa Intent.Cele mai comune actiuni sunt
ACTION_VIEW si ACTION_SEND.

Categoria

Un sir de caractere ce retine informatii despre tipul de componenta care ar trebui sa se


ocupe de intentul respectiv.Se poate oferi o gama larga de descrieri ale categoriei ce pot
fi plasate intr-un intent dar majoritatea intenturilor nu necesita o categorie.Unele dintre
cele mai folosite categori sunt CATEGORY_BROWSABLE si CATEGORY_LAUNCHER.

Proprietatile definite anterior(nume componenta,actiune,categorie) reprezinta


caracteristici definitorii ale unui intent.Verificand aceste proprietati,sistenul Android este
in masura sa determine ce componenta a aplicatiei sa porneasca.Totusi,un intent poate
pastra si informatii aditionale care nu afecteaza cu este intrepretata componenta de
catre sistem.Un intent poate contine si una sau mai multe dintre informatiile urmatoar:

Extras

Perechi de key-valori ce pastreaza informatii aditionale necesare pentru finalizarea


actinunii cerute.

Flaguri

Flagurile sunt definite in clasa Intent ca si metadate pentru aceasta.Ele ofera informatii
sistemului despre cum sa se porneasca o activitate,spre exemplu ,carui task apartine
activitatea respectiva ,si cum sa o ruleze odata pornita.

Fortarea alegerii unei aplicatii

Atunci cand mai multe aplicatii raspund intentului implicit,userul poate selecta ce
aplicatie sa foloseasca si in acelasi timp sa defineasca o aplicatie default pentru actiunea
respectiva.Abilitatea de a selecta o aplicatie default este benefica atunci cand se
realizeaza o activitate pentru care utilizatorul este posibil sa foloseasca aceeasi aplicatie
pentru finalizarea operatiunii de fiecare data cu ar fi atunci cand se deschide o pagina
web.

Totusi,daca mai multe aplicatii raspund intentului respectiv ,iar utilizatorul vrea sa
folosesasca o aplicatie diferita de fiecare data,este recomandata afisarea unui meniu de
alegere a aplicatiei.Meniul pune la dispozitie utilizatorului aplicatiile disponibile pentru
indeplinirea taskului respectiv.

S-ar putea să vă placă și