Model-widok-prezenter (MVP) to dobrze znany wzorzec projektowania aplikacji GUI. W przypadku Androida wdrożenie logiki biznesowej w prostym module Java ułatwia testowanie bez konieczności używania emulatora Androida.Trudności związane z funkcją Model-View-Presenter w systemie Android
Jednak mam trudności wykonawcze wzór na Androida z powodu szczególnych wymagań do GUI aplikacji Android:
działalność może zostać zniszczony w dowolnym punkcie (połączenia przychodzącego, użytkownik naciska przycisk home, ...), a po odtworzeniu powinien znajdować się dokładnie w tym samym stanie, w jakim został. W przeciwieństwie do większości innych aplikacji GUI.
Aktywność może przejść przez wiele stanów cyklu życia. Można go wstrzymać, w którym to przypadku interfejs użytkownika działania nie powinien być modyfikowany. Jeśli na przykład niektóre dane są ładowane w tle, nie można ich przekazać do części widoku MVP (działanie), jeśli jest w stanie wstrzymania. Ponownie, jest to nietypowy wymóg.
Czytałem blogu MVP for Android i spojrzał na example source code. Ostatecznym celem, jaki staram się osiągnąć przy użyciu wzorca MVP, jest możliwość przetłumaczenia całej logiki biznesowej na Objective-C za pomocą transpilatora j2objc, tak, że logika biznesowa może zostać ponownie wykorzystana podczas wdrażania tej samej aplikacji na iOS.
Czy jest ktoś, kto pomyślnie wdrożył wzorzec MVP dla Androida, a w takim przypadku czego mi brakuje?
Zastanawiam się: jeśli moduł logiki biznesowej jest zwykłym java bez potrzeby "kontekstu", dlaczego ma znaczenie cykl życia "Działanie"? Innymi słowy, dlaczego te specjalne wymagania GUI są problemem? – Blacklight
Jeśli część "Widok" MVP może nie być aktualizowana w niektórych punktach (gdy jest wstrzymana), czy 'Presenter' lub' Model' nie znają? A czy "Model" nie powinien być tak stworzony, aby można go było przywrócić w późniejszym czasie? – foens
Można argumentować, że działanie jest odpowiedzialne za zarządzanie cyklem życia i ustawianie/wstrzymywanie/odrywanie prezentera w razie potrzeby. Prezenter nie jest mądrzejszy w stosunku do twojego układu zależnego od ramek interfejsu użytkownika. – dcow