Best Practice für Android MVVM startActivity

9

Ich baue eine Android App mit MVVM und DataBinding. Und ich habe eine Funktion in meinem ViewModel, die eine Aktivität startet. Ist es in Ordnung, einen onClick-Aufruf in einem ViewModel zu haben?

So.

%Vor%

Und in meinem XML:

%Vor%

Oder wäre es eine bewährte Methode, es in die Ansicht zu verschieben und von EventBus oder Rx aus aufzurufen und nur POJO in meinem ViewModel zu haben?

    
Felipe Kenji Shiba 07.11.2016, 21:53
quelle

2 Antworten

7

Die Antwort auf Ihre Frage ist, was ist Ihr Ziel?

Wenn Sie MVVM für die Trennung von Problemen verwenden möchten, damit Sie Ihr Viewmodel testen können, sollten Sie versuchen, alles, was einen Context erfordert, von Ihrem Viewmodel getrennt zu halten. Das Viewmodel enthält die Kerngeschäftslogik Ihrer App und sollte keine externen Abhängigkeiten aufweisen.

Aber ich mag, wohin du gehst :) Wenn die Entscheidung, welche Aktivität geöffnet wird, in der Ansicht liegt, dann ist es sehr, sehr schwer, einen JUnit-Test dafür zu schreiben. Sie können jedoch ein Objekt in das Viewmodel übergeben, das den Aufruf von startActivity () ausführt. Jetzt können Sie in Ihrem Komponententest dieses Objekt einfach verspotten und überprüfen, ob die richtige Aktivität geöffnet ist.

    
Kaskasi 19.12.2016, 10:48
quelle
5

Das ist absolut perfekt, um es in ViewModel zu setzen, aber Sie müssen Ihre ViewModel von Activity / Fragment setzen.

Hier sind einige Links, über die Sie die MVVM-Architektur erlernen können.

Annäherung an Android mit MVVM
Android MVVM
Ссылка
< a href="https://github.com/erikcaffrey/People-MVVM"> Personen-MVVM
Ravi Rupareliya 08.11.2016 04:36

quelle