Ca de obicei, Google I / O din acest an a văzut multe anunțuri legate de Android.
În această serie de sfaturi rapide, vom examina mai îndeaproape unele dintre actualizările de software și noile versiuni pe care le puteți pune pe mâini astăzi.
În acest prim post, vom examina o colecție de biblioteci care urmărește să elimine durerea din gestionarea ciclului de viață, oferindu-vă o modalitate de a construi componente bazate pe ciclul de viață, care să poată urmări și să reacționeze automat la evenimentele ciclului de viață. Voi oferi, de asemenea, o scurtă prezentare a celorlalte două componente care au fost concepute pentru a fi utilizate cu aceste componente noi bazate pe ciclul de viață: LiveData and Room.
Respectarea ciclului de viață al dvs. Activitate
și Fragment
este crucial la crearea unei aplicații de succes. Obțineți aceste greșeli fundamentale și veți termina cu scurgeri de memorie care cauzează o întârziere a aplicației dvs. și poate chiar căderi.
O altă problemă recurentă pe care o puteți întâlni cu gestionarea ciclului de viață încearcă să actualizeze interfața de utilizare a aplicației atunci când activitatea sau fragmentul nu sunt într-o stare validă. De exemplu, dacă o Activitate
primește un apel după ce a fost oprit, atunci este foarte probabil ca aplicația dvs. să se prăbușească.
Pentru a vă ajuta să evitați toate durerile de cap care vin cu gestionarea ciclului de viață, Google a anunțat un nou set de componente care respectă ciclul de viață care pot urmări ciclul de viață al unei activități sau fragment și își pot adapta comportamentul.
Puteți accesa aceste componente de arhitectură Android prin intermediul magazinului Maven Google astăzi. Cu toate acestea, acestea sunt încă în alfa, așadar trebuie să vă așteptați la unele modificări înainte de lansarea 1.0.
În special, Fragment
și AppCompatActivity
clase nu pot implementa noul LifecycleOwner
interfață. Va trebui să utilizați temporar LifecycleActivity
și LifecycleFragment
până când componentele de arhitectură Android ajung la lansarea 1.0. Aceste clase vor fi depreciate de îndată ce fragmentele și activitățile Android vor fi actualizate pentru a susține componentele ciclului de viață.
Pentru a începe să experimentați aceste componente, va trebui să adăugați depozitul Google Maven la nivel de proiect build.gradle fişier:
allprojects repositories jcenter () // Adăugați depozitul Google Maven // maven url 'https://maven.google.com'
Apoi, deschideți nivelul modulului build.gradle fișier și adăugați următoarele:
dependență compile fileTree (dir: 'libs', include: ['* .jar']) compilați "android.arch.lifecycle: runtime: 1.0.0-alpha1" compilați "android.arch.lifecycle: extensions: 1.0.0 -alpha1 "adnotareProcesor" android.arch.lifecycle: compilator: 1.0.0-alpha1 "
Există câteva componente de arhitectură Android, însă în acest articol ne vom concentra pe următoarele două:
LifecycleOwner
: Acesta este un lucru care are un ciclu de viață, cum ar fi un an Activitate
sau Fragment
.LifecycleObserver
: Aceasta este o clasă care poate monitoriza starea unui ciclu de viață al componentei prin metode adnotate. Aceste metode sunt numite ori de câte ori componenta asociată intră în starea ciclului de viață corespunzător.Prin mutarea codului care monitorizează și reacționează la evenimentele ciclului de viață într-un sistem separat LifecycleObserver
, puteți preveni metodele legate de activitatea sau fragmentul de viață al unui fragment (cum ar fi onStart
și onStop
) de la balonare afară din control, făcând codul mult mai ușor de citit de om.
În următorul exemplu, implementăm LifecycleObserver
, și apoi folosind @OnLifeCycleEvent
să reacționeze la diferite evenimente de ciclu de viață:
import șiroid.arch.lifecycle.Lifecycle; import android.arch.lifecycle.LifecycleObserver; import android.arch.lifecycle.OnLifecycleEvent; clasa publica SecondActivity implementează LifecycleObserver ... lifecycle.addObserver (this); @OnLifecycleEvent (Lifecycle.Event.ON_START) void start () // Când Activitatea intră într-o stare ON_START, faceți ceva // @OnLifecycleEvent (Lifecycle.Event.ON_STOP) void stop () // Când Activitatea intră o stare ON_STOP, faceți ceva // // Când activitatea este distrusă, anulați înregistrarea LifecycleObserver // @OnLifecycleEvent (Lifecycle.Event.ON_DESTORY) void cleanup () lifecycle.removeObserver (this);
Apoi, în Activitate
pe care doriți să le monitorizați, să le extindeți LifecycleActivity
pentru a avea acces la LifecycleObserver
informație:
clasa publica MainActivity extinde LifecycleActivity
Multe operațiuni pot fi efectuate numai atunci când un fragment sau o activitate se află într-o stare specifică. Poți să folosești lifecycle.getState
pentru a verifica rapid și ușor starea curentă a componentei și apoi efectuați acțiunea numai dacă componenta este în starea corectă:
dacă (lifecycle.getState ()) este cel mai recent (STARTED))
LiveData
LiveData
este un suport de date observabil care expune un flux de evenimente pe care le puteți observa.
Diferența cheie între LiveData
și alte observabile, cum ar fi RxJava, este asta LiveData
este conștient de ciclul de viață Android. LiveData
respectă starea de viață a activităților, fragmente și servicii și vă va gestiona abonamentele.
În mod crucial, dacă ciclul de viață al unui observator este inactiv, atunci observatorul nu va fi notificat despre modificările aduse LiveData
, prevenind accidentele de aplicații care pot apărea atunci când încercați să împingeți actualizările la componentele oprite.
A folosi LiveData
, trebuie doar să-ți spui Activitate
că doriți să observați anumite date în cadrul ciclului de viață:
public class MyActivity extinde LifecycleActivity public void onCreate (Bundle savedState) LiveDatadatele utilizatorului; // Obțineți date de utilizator de undeva // userData.observe (acest utilizator, -> );
De îndată ce începe activitatea, va începe observarea LiveData
, iar observatorul dvs. va primi o actualizare ori de câte ori valoarea acesteia LiveData
schimbări. În cazul în care Activitate
este distrus, abonamentul va fi eliminat automat.
Daca un Activitate
este oprit din cauza unei modificări a configurației, apoi a noii instanțe a acesteia Activitate
va primi ultima valoare disponibilă din LiveData
.
LiveData
împărtășește unele asemănări cu RxJava, dar cuvântul oficial de la Google I / O este că dacă sunteți familiarizat cu RxJava, atunci ar trebui să începeți proiectele Android cu LiveData
, deoarece este proiectat să fie simplu, rapid și ușor și se integrează bine cu cadrul Android. Apoi puteți adăuga caracteristici RxJava dacă aveți nevoie de funcționalitate suplimentară de programare reactivă.
Dacă doriți să utilizați LiveData
cu biblioteca RxJava 2, apoi deschideți nivelul modulului build.gradle fișier și adăugați următoarele:
compilați "android.arch.lifecycle: reactivestreams: 1.0.0-alpha1"
Veți putea apoi să utilizați următoarele metode:
toPublisher
: Adaptă LiveData
flux la un ReactiveStreams Editor
.
statică publicăEditor toPublisher (ultimul ciclu de viață LifecycleOwner, final LiveData liveData)
fromPublisher
: Creează o observabilitate LiveData
de la un editor ReactiveStreams.
statică publicăLiveData fromPublisher (editor final editor)
Deși cadrul Android are built-in suport pentru lucrul cu conținut SQL brut, aceste API-uri sunt destul de joase și consumatoare de timp pentru a implementa.
Noua bibliotecă de cameră Google promite să abroge unele dintre detaliile de implementare care stau la baza de lucru cu tabele SQL SQL și interogări. De asemenea, ar trebui să contribuiți la reducerea cantității de cod de boilerplate pe care trebuie să o scrieți pentru a converti interogările SQL în obiecte de date Java și oferă o migrațiune
clasă pe care o puteți utiliza pentru a vă actualiza aplicația fără a pierde datele utilizatorului.
Pentru a utiliza Camera, deschideți modulul build.gradle fișier și adăugați următoarele la dependențe
secțiune:
compilați "android.arch.persistence.room:runtime:1.0.0-alpha1" adnotareProcesor "android.arch.persistence.room:compiler:1.0.0-alpha1"
Când efectuați interogări, veți dori în mod obișnuit ca interfața dvs. utilizator să se actualizeze automat ori de câte ori se schimbă datele; cu Room, puteți obține acest lucru utilizând un tip de valoare de retur LiveData
.
În cele din urmă, dacă utilizați RxJava, atunci întrebările camerei pot reveni și pe RxJava 2 Editor
și curgător
obiecte. Pentru a folosi RxJava cu Room, va trebui să deschideți nivelul modulului build.gradle fișier și adăugați următoarele la dependențe
secțiune:
compile 'android.arch.persistence.room:rxjava2:1.0.0-alpha1'
În acest sfat rapid, v-am arătat cum să gestionați ciclul de viață Android, utilizând LifecycleOwner și LifecycleObserver, și v-ați prezentat două componente suplimentare pe care ați dori să le utilizați împreună cu proiectul Lifecycle.
În următorul sfat, vom analiza planurile Google de a îmbina componentele UI Android Wear cu Biblioteca de suport Android, precum și unele adăugiri la complicațiile Android Wear.
Între timp, verificați unele dintre celelalte tutoriale și cursurile noastre video de dezvoltare a aplicațiilor Android!