Model-View-szándék minta android

Most kilátást nyújtó modell, hogy ő jeleníti meg. Ez a koncepció nem új. Az eredeti leírás az MVC Reenskauga Trygve mondta majdnem ugyanaz: Az figyeli a modell változást. De, sajnos, az MVC. leírása számos mintát, nem ugyanaz, mint fogalmazott Reenskaug Trygve 1979.

Backend fejlesztő használja MVC keretrendszerek iOS fejlesztők egy ViewController. De! Hol van MVC az Android. Van Activity vezérlő? Mi ClickListener. egyáltalán nem a mi időnkben, az MVC, hogy ha egyszer fogalmazott Reenskaug ... De nézzük tovább, amíg fulladt holivar.

Térjünk vissza ahhoz, amit mondtam az elején. Miután a megfelelő modell megoldja a sok probléma Android, hogy gyakran találkozunk az alkalmazás fejlesztési folyamat. Mint például:

  1. A probléma az alkalmazás állapotát (State probléma)
  2. A képernyő tájolásának megváltoztatása
  3. Mozgás a hátsó köteg
  4. A pusztítás folyamat / program (Process halál)
  5. Az adatok állandóság (állandóság és egyirányú adatforgalom)
  6. Hibakeresés és lejátszás állapotát
  7. A képesség, hogy teszteljék

Beszéljünk kezdve a problémát úgy oldották meg a hagyományos értelemben vett minta MVP és MVVM. És lássuk, hogyan kell megfogalmazni a koncepció modell lehetővé teszi számunkra, hogy elkerülhető a buktatókat.

A probléma az alkalmazás állapotát (State probléma)

Határozza meg, milyen állapot (állam). A legtöbb esetben az állam értendő, amit jelenleg látható a képernyőn, mint a „State of tartalom letöltése”, amikor a nézet megjeleníti Folyamatsáv.

Arra koncentrálunk, az állam az UI. állapotban a felület. És ebben rejlik a lényeg. Nézzük meg a fenti kódot (ami használható PersonsModel). Talán észrevetted, hogy az UI állam szabályozza Presenter. Tipikus munkát és a MVVM mintát.

De szeretném osztani végrehajtásának MVVM minta két megközelítés: az első Android adat kötelező, a második azt jelenti RxJava. Az első kiviteli alaknál, a állapotban tárolják ViewModel.

Természetesen a kód nem tökéletes, és van valami, hogy adjunk. Az ötlet az, hogy az MVP és MVVM állapot valósul meg Presenter vagy ViewModel.

Ebből levonhatjuk az alábbi következtetéseket:

  1. Üzleti logika állapotuk, Presenter (vagy ViewModel) - az (akkor szinkronizálhatja ezen állapotok, ezek hasonlóak), és kilátás is van egy állapot.
  2. Presenter (vagy ViewModel) lehet több ellenőrzési módszerek (ami megtekintése. Például), és ez normális. De ugyanígy Presenter lehet egy több kimenettel (például adatok és módszerek megtekintése. Mint például view.showLoading () vagy view.showError () in MVP). Mindez set vezethet ütköző állapotainak megtekintése. Előadói és az üzleti logika, különösen, ha a munkát a sok szálat.

Az ilyen hibák nagyon nehéz megfogni, sokkal kevesebb ismétlés.

Mi a teendő, ha az egyik forrása az állapota? Már beszéltünk erről az elején, amikor megbeszéltük a kérdést: „Mi az a modell?”.

Meg tudja tippelni? A modell reagál az állam. Amint megértettem - sok a probléma kapcsolódó feltétel (állami) megoldódott, és a műsorvezető csak egy módon getView () render (PersonsModel) .. Ez hasonló az f (x) = y (a számos lehetséges érveket). És ellentétben a kódot, a matematika nem tudja a hibákat =)

Fontos megérteni, hogy mi a „modell”, és hogyan operedelit, mert ez vezethet modell megoldja a „problémát állam”

A képernyő tájolásának megváltoztatása

A legegyszerűbb módja -, hogy figyelmen kívül hagyja a tájolás-változáshoz. Egyszerűen indítsa újra az adatokat, miután változó képernyő tájolását. Ez egy jól megalapozott döntést. A legtöbb esetben az alkalmazás működik az offline, így az adatok jön egy helyi adatbázis vagy a cache. Ezért az adatok betöltése nagyon gyors megváltoztatása után képernyő tájolását. Így a fejlesztők elkezdték használni az MVP a «megtartása műsorvezető», hogy képes szétválasztani (és elpusztítani) kilátás, ha megváltozott a képernyő tájolása, míg a Presenter memóriában, majd újra köti a nézet, hogy a Presenter. Ez a megoldás is létezik MVVM a RxJava.

De van egy probléma mentés Presenter'a (vagy ViewModel). Tekintse hogyan kell visszaállítani az állam előtti állapotban a képernyő elforgatását, hogy a nézet és Presenter már ugyanolyan állapotban? A könyvtár Mosby dől keresztül ViewState amely szinkronizálja az állam az üzleti logikát a nézet. Moxy. Egy másik MVP könyvtár valósít érdekes megközelítést a „parancs” helyreállítani az állam a nézet.

Biztos vagyok benne, hogy ugyanúgy, ahogy vannak más megoldások is a problémához kapcsolódó az állam. És így, ezek a könyvtárak megoldani a problémát, az állam, amely már szóltunk.

És ismét van „modell”, amely tükrözi a jelenlegi „sostonie” és csak egy „render” módszer (getView (). Render (PersonsModel)). Az oldatot 2 gyakorlatilag csökken a probléma 1

Vissza verem navigáció

Muszáj, hogy Presenter (ViewModel), amikor a nézet már nem használják? Például, ha a töredék (View) váltotta másik töredék. mert a felhasználó haladt a másik képernyőre, nincs több csatolt nézet Presenter. Ha nézet nem kapcsolódik a Presenter. akkor nyilván ő nem lesz képes frissíteni a legfrissebb adatok. Mi van, ha a felhasználó úgy dönt, hogy menjen vissza a képernyőn (pl kattintott a vissza gomb)? Töltenie az adatokat, vagy újra Presenter. Ez a filozófiai kérdés =). Általában, ha visszatér az előző képernyőre, a felhasználó elvárja, hogy őt, mint ő volt (így a felhasználó milyen a „bal”). Ez többnyire „View hasznosítás állami feladat (lásd 2. pont). A megoldás ugyanaz: a modell állapotát visszaállítja a befutó ViewgetView () render (PersonsModel) ..

folyamatmenedzsment

Gyakori hiba a világon a Android fejlesztés tekinthető, hogy a megsemmisítési folyamatot egy rossz dolog, és szükségünk van a könyvtár, hogy segítsen megőrizni és helyreállítani az állam lerombolása után folyamatot. Hát először is a folyamat megsemmisült, amikor az Android operációs rendszer több kell az erőforrásokat más alkalmazások, illetve az akkumulátor kímélése érdekében. De ez soha nem fog megtörténni, ha az alkalmazás aktív (az előtérben) és a felhasználói használja ezen a ponton. Ha tényleg szükség van, hogy végre egy hosszú feladat -, hogy a Szolgáltatást, mint egy lehetőséget, hogy az operációs rendszert, hogy az alkalmazás még mindig aktívan használják.

A pusztítás Android kihívást jelent folyamat onSaveInstanceState () metódus, hogy mentse az állam. Ismét Status =) (állam). E tartani az információt megtekintése a Bundle. Nincs műsorvezető vagyonát, ami szintén meg kell tartani a csomagot. Mi a helyzet az állam az üzleti logika? Már le ezeket a kérdéseket a fenti 1 - 3. Ehhez szükségünk van egy osztály modell. ami helyreállítja / tartja fenn a „minden” állapotban van. By the way, nem kell menteni valamit elégszer =)

Ossza meg ezt a linket:

Kapcsolódó cikkek