Mvp în aplicația Android (partea 3)

În ultimele părți, am discutat despre MVP în aplicațiile Android. În prima parte, am vorbit despre ce este MVP. În a doua parte, am considerat un exemplu de implementare a acestui model de proiectare prin crearea unei aplicații simple pentru RSS.







Mvp în aplicația Android (partea 3)

În această parte, vom examina implementarea acestui model cu referire la bibliotecile Retrofit și RxAndroid. De exemplu, vom folosi o aplicație pentru monitorizarea cutremurelor. În acest scop, vom folosi API din USGS.

Voi descrie un pic, în ce constă esența ideii.

Nu este un secret faptul că majoritatea aplicațiilor (de la jocuri la aplicații de afaceri) utilizează cereri de rețea. Aceste cereri, ca regulă, returnează informații de la un server la distanță, care, după o anumită prelucrare, le afișăm utilizatorului.

documentația Android pentru aceste cereri sugerează folosirea claselor HttpUrlConnection (pentru rețea), și AsyncTask sau Loader pentru a trata cererile în afara principalelor aplicații flux și actualizează informațiile de pe ecran.

Nu mă voi concentra asupra a ceea ce exact aceste clase nu se potrivesc dezvoltatorilor, deoarece acesta nu este subiectul principal al articolului. Permiteți-mi să spun doar că este mai convenabil de a lucra cu bibliotecile gata făcute de Piața la cererile de rețea (ca regulă, OkHttp și renovărilor) și RxAndroid (pentru programare reactivă), care este un set de idei: modelul „Observer“, și programarea funcțională. Link-uri detaliate cu descrierea sunt la sfârșitul articolului.

Deoarece, în cazul nostru, vor avea loc astfel de cereri, și anume cererea de cutremure recente de pe site-ul usgs.gov. luați în considerare crearea unei astfel de aplicații utilizând MVP și bibliotecile listate.

Mai întâi de toate, trebuie să conectăm bibliotecile necesare în fișierul nostru de coltare. Vreau să rețin că RxAndroid necesită conexiune RxJava. Și, de asemenea, pentru confort sunt conectate lambdas prin biblioteca retrolambda.

Structura proiectului va fi aceeași ca în a doua parte. Proiectul în sine și structura sa:

MrVolt / MVP-RX-Retrofit-Exemplu
Exemplu MVP-RX-Retrofit - Acest depozit este un exemplu special pentru articolul meu Medium github.com

Aplicația are doar 1 ecran, care afișează primele 10 cutremure din ultima vreme.

În primul rând va trebui să creați un model. Așa cum sa arătat în prima și a doua parte - modelele, acestea sunt clasele care reprezintă datele noastre și o anumită logică de afaceri în aplicație.

Înainte de a crea un serviciu pentru a lucra cu interogări, trebuie să furnizăm datele json (pe care le primim prin referință) ca clase. De asta avem nevoie de Gson. care ajută la serializarea clasei java în datele json și le deserializează.







Mvp în aplicația Android (partea 3)

Cum pare să creați un POJO din datele JSON

După generarea fișierelor POJO, putem să le copiem manual la proiectul nostru sau să le descărcăm.

Imediat ce pregătim fișierele noastre, trebuie să creați o interfață care să funcționeze cu rețeaua prin intermediul Retrofit.

Deoarece sarcina principală a prezentatorului-a este de a interoga modelul de date, atunci avem nevoie de o clasă care să pregătească aceste date atunci când sună la o metodă. În aceste scopuri, vom folosi clasa EarthquakeApi:

Aici și mai departe, trebuie avut în vedere că aproape fiecare clasă (în toate cele trei straturi) are o interfață.

Aceasta completează implementarea modelului. Dacă ne uităm scurt la ceea ce am făcut, putem distinge următoarele:

  1. Trebuie să creați un POJO pentru datele noastre. Deoarece lucrarea are loc cu datele JSON. Trebuie să conectăm biblioteca GSON.
  2. Trebuie să creați o interfață care va fi necesară pentru a executa interogări prin intermediul Retrofit.
  3. Pentru a interacționa cu modelul, avem nevoie de un punct de intrare. Unii adaugă la numele său -Repository. Folosesc o clasă al cărei nume este -API.

Acum, să vorbim despre stratul Vizualizare. După cum am menționat mai devreme pe ecran, avem doar unul. În cea de-a doua parte, am analizat interacțiunea dintre straturi prin interfețe. Prin urmare, voi prezenta pe scurt interfața și implementarea ecranului nostru.

Această interfață ne va permite să accesăm ecranul nostru prin intermediul aplicației Presenter.

Implementarea ecranului este destul de banală. Metodele de actualizare a informațiilor și, bineînțeles, punctul standard în care este creat prezentatorul. Vreau să vă reamintesc că ecranul servește doar pentru afișarea informațiilor. Aceleași informații pe care le vom primi de la Prezentator-a.

Să vorbim despre stratul Presenter. Interfața însăși, nu voi posta, o puteți găsi sub link-ul proiectului. De fapt, sarcina sa, ca orice interfață, este descrierea contractului pe care o anumită clasă trebuie să îl implementeze.

Prezentatorul în sine conține o legătură cu modelul și cu vizualizarea. Pentru că este mediatorul între date și cartografiere. Aici ne vom uita la RxAndroid mai aproape.

Aici chipul constă în următoarele. Când interogăm modelul de date, obținem observabil. care se execută numai atunci când apelăm metoda subscribe (). În acest caz, merită să ne amintim că prezentatorul ar trebui să actualizeze datele din vizualizare. Deci, ar trebui să interacționeze cu el prin firul principal de aplicație. În același timp, atunci când apelați metoda vom lucra cu rețeaua, și, prin urmare, trebuie să respecte toate cererile într-un fir separat, astfel încât cererea noastră nu sa prăbușit, cu excepția NetworkOnMainThreadException.

Pentru aceasta, există programatori în RxAndroid. care vă permit să efectuați executarea de interogări într-un fir separat și să procesați datele și să le trimiteți la vizualizare - prin firul principal. Aceste două abordări sunt reprezentate de metodele subscribeOn () și observeOn (). Metoda subscribe () este exact ceea ce este nevoie pentru a trimite datele într-o vizualizare care actualizează lista.

Unele pot avea o întrebare, de ce să nu actualizeze lista în sine sau să prezinte date prin intermediul prezentatorului său. Aici totul este destul de simplu - prezentatorul nostru nu ar trebui să știe nimic despre sistemul de clasă Android.

Acum, să ne uităm la întregul lanț de linkuri și apeluri din exemplu:

  1. Când executați aplicația, vom crea o instanță de prezentator. care este chemat să solicite date.
  2. Prezentatorul, la rândul său, primește un link către vizualizarea apelului și creează o instanță a accesului la model.
  3. Pentru a obține observabil, prezentatorul nostru sună metoda modelului nostru.
  4. Modelul nostru creează o cerere către server prin Retrofit și returnează observabil.
  5. Prezentatorul subscrie la acest lucru observabil și, după primirea rezultatului, îl procesează și îl trimite la vizualizare.
  6. Vederea afișează rezultatul în ListView.

Aceasta completează exemplul. În următorul articol, vom vorbi despre testarea aplicațiilor scrise utilizând modelul MVP.

Legături către biblioteci și Wiki:







Articole similare

Trimiteți-le prietenilor: