Il nostro team sta creando un'app per Android che utilizza Kotlin (se questo è importante) seguendo le linee guida descritte dallo zio Bob (Robert Martin).
Il modello di presentazione che usiamo è MVI . Abbiamo relatori che comunicano con Use Cases / Interactors e convertono gli oggetti entità risultanti in ViewModels, adatti per il rendering dalla vista.
Utilizziamo un DB reattivo (Realm) per l'archiviazione. Tutte le comunicazioni Visualizza - > Presenter viene eseguito tramite RxJava2 e RxBinding.
Ora, per la parte interessante. Il database reattivo consente di ascoltare il cambiamento tramite ascoltatori o Osservabili. La seconda opzione è davvero facile da usare. Ma, non voglio usare RxJava nel nostro UseCase / Interactor, voglio che dipendano il più possibile da stdlib . Ovviamente, possiamo avvolgere le loro operazioni in Observables ed eseguirle su un thread in background.
Ho visto molte implementazioni che utilizzano RxJava in profondità nella loro logica di business. Beh, non è solo sbagliato? Tutti questi "operatori" ti fanno affidamento su di loro e ignorano totalmente la potenza della lingua che stai utilizzando.
Quindi, la mia domanda si riduce a questo: è possibile ascoltare le modifiche da un database reattivo senza utilizzare Observables o Listener quando si esegue una query? Le coroutine (o qualcos'altro) sono un'opzione qui?