Differences

This shows you the differences between two versions of the page.

Link to this comparison view

eim:laboratoare:laborator02 [2020/02/26 21:42]
madalina.barbu [Android Studio]
eim:laboratoare:laborator02 [2022/03/14 09:32] (current)
dan_valentin.bina [Ciclul de Viață al unei Activități]
Line 152: Line 152:
 <note tip>​Distincția între cele două situații în care o activitate este distrusă poate fi realizată prin intermediul metodei ''​isFinishing()''​.</​note>​ <note tip>​Distincția între cele două situații în care o activitate este distrusă poate fi realizată prin intermediul metodei ''​isFinishing()''​.</​note>​
  
-{{ :​eim:​laboratoare:​laborator02:​ciclul_de_viata_al_unei_activitati_2.png?​nolink&​700 }}+{{ :​eim:​laboratoare:​laborator02:​ciclul_de_viata_al_unei_activitati_2_nou.png?​nolink&​700 }} 
  
 <note important>​Fiecare dintre metodele ce gestionează ciclul de viață al activității trebuie să apeleze metoda părintelui. În cazul metodei ''​onCreate()'',​ este necesar ca acest lucru să fie realizat la începutul metodei.</​note>​ <note important>​Fiecare dintre metodele ce gestionează ciclul de viață al activității trebuie să apeleze metoda părintelui. În cazul metodei ''​onCreate()'',​ este necesar ca acest lucru să fie realizat la începutul metodei.</​note>​
Line 325: Line 326:
  
 ==== Coordonarea Activităților ==== ==== Coordonarea Activităților ====
 +<​spoiler>​
 În situația în care o activitate nouă este pornită în timp ce o activitate veche este în execuție, fiind necesară transmiterea de informații dintre acestea, este util să se cunoască ordinea în care sunt apelate metodele care gestionează ciclul de viață al celor două activități,​ astfel încât comunicarea dintre acestea să se realizeze în mod corect: În situația în care o activitate nouă este pornită în timp ce o activitate veche este în execuție, fiind necesară transmiterea de informații dintre acestea, este util să se cunoască ordinea în care sunt apelate metodele care gestionează ciclul de viață al celor două activități,​ astfel încât comunicarea dintre acestea să se realizeze în mod corect:
   - se apelează metoda ''​onPause()''​ a activității vechi - aici trebuie realizată partea de scriere a informațiilor care trebuie să fie trimise;   - se apelează metoda ''​onPause()''​ a activității vechi - aici trebuie realizată partea de scriere a informațiilor care trebuie să fie trimise;
Line 333: Line 334:
  
 {{ :​eim:​laboratoare:​laborator02:​coordonare_activitati.png?​nolink&​400 }} {{ :​eim:​laboratoare:​laborator02:​coordonare_activitati.png?​nolink&​400 }}
 +</​spoiler>​
 ===== Structura unui Proiect Android ===== ===== Structura unui Proiect Android =====
  
Line 595: Line 596:
 </​hidden>​ </​hidden>​
 ==== Android Studio ==== ==== Android Studio ====
 +<​spoiler>​
 În Android Studio, există mai multe perspective sub care poate fi vizualizată structura unui proiect: În Android Studio, există mai multe perspective sub care poate fi vizualizată structura unui proiect:
   * Project (reprezintă structura de pe discul fizic)   * Project (reprezintă structura de pe discul fizic)
Line 644: Line 645:
     * local.properties     * local.properties
     * settings.gradle     * settings.gradle
 +</​spoiler>​
 +
 +==== Gradle ====
  
-=== Gradle === 
-<​spoiler>​ 
 Android Studio folosește un mecanism automat pentru construirea aplicației Android, denumit **Gradle**, responsabil cu aducerea bibliotecilor referite de pe un depozit la distanță, cu definirea proprietăților aplicației Android, cu compilarea și împachetarea tuturor resurselor folosite, pentru rularea și instalarea aplicației astfel rezultate. Android Studio folosește un mecanism automat pentru construirea aplicației Android, denumit **Gradle**, responsabil cu aducerea bibliotecilor referite de pe un depozit la distanță, cu definirea proprietăților aplicației Android, cu compilarea și împachetarea tuturor resurselor folosite, pentru rularea și instalarea aplicației astfel rezultate.
  
Line 694: Line 696:
 } }
 </​file>​ </​file>​
-</​spoiler>​ 
 ===== Rularea și Depanarea unei aplicații Android ===== ===== Rularea și Depanarea unei aplicații Android =====
  
Line 711: Line 712:
 Depanarea unei aplicații Android poate fi realizată în mod clasic, ca în cazul oricărui proiect (prin stabilirea unor puncte în care execuția codului sursă este întreruptă și rularea pas cu pas) sau prin intermediul unor utilitare specifice. Depanarea unei aplicații Android poate fi realizată în mod clasic, ca în cazul oricărui proiect (prin stabilirea unor puncte în care execuția codului sursă este întreruptă și rularea pas cu pas) sau prin intermediul unor utilitare specifice.
  
 +<​hidden>​
 În cadrul mediului integrat de dezvoltare Eclipse, depanarea unei aplicații este facilitată prin împărțirea ecranului în mai multe perspective între care programatorul are posibilitatea de a comuta: În cadrul mediului integrat de dezvoltare Eclipse, depanarea unei aplicații este facilitată prin împărțirea ecranului în mai multe perspective între care programatorul are posibilitatea de a comuta:
   * Java - pentru realizarea de modificări la nivelul codului sursă   * Java - pentru realizarea de modificări la nivelul codului sursă
Line 718: Line 720:
  
 {{ :​eim:​laboratoare:​laborator02:​eclipse_perspectives_for_android.png?​nolink }} {{ :​eim:​laboratoare:​laborator02:​eclipse_perspectives_for_android.png?​nolink }}
 +</​hidden>​
 === Android Debug Bridge (ADB) === === Android Debug Bridge (ADB) ===
  
Line 812: Line 814:
 {{ :​eim:​laboratoare:​laborator02:​logcat_configuration.png?​nolink&​700 }} {{ :​eim:​laboratoare:​laborator02:​logcat_configuration.png?​nolink&​700 }}
  
-=== Android Device Monitor ===+<​hidden>​ 
 +=== Android Device Monitor ​- deprecated!!! ​===
  
 Utilitarul pentru depanarea aplicațiilor pentru Android se numește **Android Device Monitor** (anterior purta denumirea DDMS - Dalvik Debug Monitor System). Acesta folosește **ADB (Android Debug Bridge)**, pentru a se conecta dispozitive fizice sau la emulatoare. Prin intermediul ADM se pot vizualiza parametrii dispozitivului si a aplicațiilor ce ruleaza pe acesta. În Android Studio, Android Device Monitor este accesibil din //Tools// → //Android// → //Android Device Monitor//. În Eclipse, poate fi accesat sub forma unei perspective,​ care va fi deschisă prin //Window// → //Open Perspective//​ → //​DDMS//​. ​ Utilitarul pentru depanarea aplicațiilor pentru Android se numește **Android Device Monitor** (anterior purta denumirea DDMS - Dalvik Debug Monitor System). Acesta folosește **ADB (Android Debug Bridge)**, pentru a se conecta dispozitive fizice sau la emulatoare. Prin intermediul ADM se pot vizualiza parametrii dispozitivului si a aplicațiilor ce ruleaza pe acesta. În Android Studio, Android Device Monitor este accesibil din //Tools// → //Android// → //Android Device Monitor//. În Eclipse, poate fi accesat sub forma unei perspective,​ care va fi deschisă prin //Window// → //Open Perspective//​ → //​DDMS//​. ​
Line 830: Line 833:
  
 **Procese și Fire de Execuție** **Procese și Fire de Execuție**
- 
 În panoul **//​Threads//​** sunt afișate informațiile despre fiecare fir de execuție corespunzător unui proces. Întrucât aceste informații sunt preluate prin intermediul unei legături de rețea, astfel încât traficul generat este destul de mare, pentru nu a se încetini semnificativ funcționarea dispozitivului mobil (care este nevoit sa transmită aceste date permanent), vizualizarea trebuie activată manual. Astfel, se selectează dispozitivul mobil dorit și procesul respectiv (din panoul //​Devices//​) și se apasă butonul //​Refresh//​. În panoul **//​Threads//​** sunt afișate informațiile despre fiecare fir de execuție corespunzător unui proces. Întrucât aceste informații sunt preluate prin intermediul unei legături de rețea, astfel încât traficul generat este destul de mare, pentru nu a se încetini semnificativ funcționarea dispozitivului mobil (care este nevoit sa transmită aceste date permanent), vizualizarea trebuie activată manual. Astfel, se selectează dispozitivul mobil dorit și procesul respectiv (din panoul //​Devices//​) și se apasă butonul //​Refresh//​.
  
 {{ :​eim:​laboratoare:​laborator02:​ddms_threads.png?​nolink&​600 }} {{ :​eim:​laboratoare:​laborator02:​ddms_threads.png?​nolink&​600 }}
- 
 **Utilizarea Memoriei** **Utilizarea Memoriei**
- 
 DDMS oferă posibilitatea de a monitoriza utilizarea memoriei în cadrul panourilor **//​Heap//​** și **//​Allocation Tracker//​**,​ oferind informații cu privire la gradul de ocupare a memoriei, defalcată pe tipuri de obiecte (obiecte, clase, tablouri conținând elemente stocate pe 1, 2, 4, 8 octeți, date non-Java). ​ DDMS oferă posibilitatea de a monitoriza utilizarea memoriei în cadrul panourilor **//​Heap//​** și **//​Allocation Tracker//​**,​ oferind informații cu privire la gradul de ocupare a memoriei, defalcată pe tipuri de obiecte (obiecte, clase, tablouri conținând elemente stocate pe 1, 2, 4, 8 octeți, date non-Java). ​
  
 {{ :​eim:​laboratoare:​laborator02:​ddms_heap.png?​nolink&​600 }} {{ :​eim:​laboratoare:​laborator02:​ddms_heap.png?​nolink&​600 }}
- 
 **Sistemul de Fișiere** **Sistemul de Fișiere**
- 
 Consultarea sistemului de fișiere al dispozitivului mobil poate fi realizat prin intermediul panoului **//File Explorer//​**,​ putând fi vizualizate datele aplicației,​ stocate în ''​data/​data/<​package-name>'',​ unde ''<​package-name>''​ este denumirea pachetului corespunzător aplicației investigate. Consultarea sistemului de fișiere al dispozitivului mobil poate fi realizat prin intermediul panoului **//File Explorer//​**,​ putând fi vizualizate datele aplicației,​ stocate în ''​data/​data/<​package-name>'',​ unde ''<​package-name>''​ este denumirea pachetului corespunzător aplicației investigate.
- 
 {{ :​eim:​laboratoare:​laborator02:​ddms_file_explorer.png?​nolink&​600 }} {{ :​eim:​laboratoare:​laborator02:​ddms_file_explorer.png?​nolink&​600 }}
 +</​hidden>​
 **Simularea unor evenimente de tip întrerupere pentru emulator** **Simularea unor evenimente de tip întrerupere pentru emulator**
- +<​spoiler>​ 
-Întrucât emulatorul de Android nu poate simula toate funcțiile unui telefon real, pentru a se putea testa comportamentul aplicațiilor în cazul apariției unor evenimente de tip întrerupere,​ DDMS pune la dispoziție un panou **//​Emulator Control//​**,​ prin care pot fi controlate:+Întrucât emulatorul de Android nu poate simula toate funcțiile unui telefon real, pentru a se putea testa comportamentul aplicațiilor în cazul apariției unor evenimente de tip întrerupere,​ DDMS(deprecated) ​pune la dispoziție un panou **//​Emulator Control//​**,​ prin care pot fi controlate:
   * starea conexiunii de voce / date   * starea conexiunii de voce / date
   * primirea unui apel telefonic / SMS (apel, pierdere apel)   * primirea unui apel telefonic / SMS (apel, pierdere apel)
Line 863: Line 860:
   * cameră foto   * cameră foto
   * accelerometru   * accelerometru
 +</​spoiler>​
 === Layout Inspector === === Layout Inspector ===
 +<​spoiler>​
 Un alt program foarte util pentru depanare este **Layout Inspector** (anterior, purta denumirea Hierarchy View). Acesta permite vizualizarea arborescentă a structurii ferestrelor. De asemenea, afișează parametrii fiecărui ''​View'',​ inclusiv timpul de încărcare. O altă funcționalitate pusă la dispoziția programatorilor este posibilitatea capturării unei imagini a View-ului. ​ Un alt program foarte util pentru depanare este **Layout Inspector** (anterior, purta denumirea Hierarchy View). Acesta permite vizualizarea arborescentă a structurii ferestrelor. De asemenea, afișează parametrii fiecărui ''​View'',​ inclusiv timpul de încărcare. O altă funcționalitate pusă la dispoziția programatorilor este posibilitatea capturării unei imagini a View-ului. ​
  
Line 889: Line 886:
  
 {{ :​eim:​laboratoare:​laborator02:​hierarchy_view_layout_view.png?​nolink }} {{ :​eim:​laboratoare:​laborator02:​hierarchy_view_layout_view.png?​nolink }}
 +</​spoiler>​
  
 ===== Activitate de Laborator ===== ===== Activitate de Laborator =====
Line 986: Line 984:
 <note tip>În fișierul ''​activity_lifecycle_monitor.xml'',​ pentru fiecare dintre elementele grafice pentru care se dorește să se dezactiveze opțiunea de salvare a stării, se va completa proprietatea ''​android:​saveEnabled="​false"''​.</​note>​ <note tip>În fișierul ''​activity_lifecycle_monitor.xml'',​ pentru fiecare dintre elementele grafice pentru care se dorește să se dezactiveze opțiunea de salvare a stării, se va completa proprietatea ''​android:​saveEnabled="​false"''​.</​note>​
  
-Să se observe care este comportamentul în privința informațiilor reținute în elementele grafice de tip ''​EditText'',​ respectiv ''​CheckBox'',​ în condițiile în care activitatea este distrusă (se apasă butonul //Home//, astfel încât să se apeleze metodele ''​onPause()''​ și ''​onStop()'',​ apoi, în DDMS, în panoul //​Devices//, ​se identifică procesul corespunzător ​aplicației și se oprește folosind butonul //Stop Process//). Să se repornească aplicația din meniul dispozitivului mobil. ​+Să se observe care este comportamentul în privința informațiilor reținute în elementele grafice de tip ''​EditText'',​ respectiv ''​CheckBox'',​ în condițiile în care activitatea este distrusă (se apasă butonul //Home//, astfel încât să se apeleze metodele ''​onPause()''​ și ''​onStop()'',​ apoi se închide ​aplicația. Să se repornească aplicația din meniul dispozitivului mobil. ​
  
 **10.** Să se implementeze metoda ''​onSaveInstanceState()'',​ astfel încât, **în condițiile în care este bifat elementul grafic de tip ''​CheckBox''​**,​ să se salveze informațiile din interfața cu utilizatorul. **10.** Să se implementeze metoda ''​onSaveInstanceState()'',​ astfel încât, **în condițiile în care este bifat elementul grafic de tip ''​CheckBox''​**,​ să se salveze informațiile din interfața cu utilizatorul.
eim/laboratoare/laborator02.1582746173.txt.gz · Last modified: 2020/02/26 21:42 by madalina.barbu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0