Aplikacja zawsze uruchamia się na głównym wątku

0

Próbuję połączyć 2 funkcje, aby działały równolegle na dwóch watkach za pomocą RxJavy. Niestety w konsoli po uruchomieniu poniższego kodu dostaję:

"getData main"
i po 10 sekundach
"getData3 main"

Funkcje zawsze odpalają się na tym samym wątku i jedna po drugiej. Wydaje mi się, że ten zapis powinien umożliwiać działanie równoległe na różnych wątkach.

fun getDataSync() {
        compositeDisposable.add(
            Observable.zip(
                repository.getData().subscribeOn(Schedulers.io()),
                repository.getData3().subscribeOn(Schedulers.io()),
                { a, b -> a + b }
            )
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(
                    {
                        _data.value = it
                    },
                    {
                        _data.value = 0
                    }
                )
        )
    }
class FakeRepositoryImpl @Inject constructor() : FakeRepository {
    override fun getData(): Observable<Int> {
        println("test2k200: getData " + Thread.currentThread().name)
        Thread.sleep(10000)
        return Observable.just(1)
    }
    override fun getData3(): Observable<Int> {
        println("test2k200: getData3 " + Thread.currentThread().name)
        return Observable.just(3)
    }
}
1

Ja nie widzę jakby to miało działać inaczej niż na jednym wątku skoro wywołujesz je jedna po drugiej.

                repository.getData().subscribeOn(Schedulers.io()),
                repository.getData3().subscribeOn(Schedulers.io()),
0
szatkus1 napisał(a):

Ja nie widzę jakby to miało działać inaczej niż na jednym wątku skoro wywołujesz je jedna po drugiej.

                repository.getData().subscribeOn(Schedulers.io()),
                repository.getData3().subscribeOn(Schedulers.io()),

sugerowałem się tym artykułem (na samym końcu finalna wersja) https://medium.com/mobile-app-development-publication/rxjava-2-parallel-multiple-network-call-made-easy-1e1f14163eef

według autora i załączonych obrazków powinno wykonywać się równolegle, zaznaczył że wystarczy dać subscribeOn na każdym observable

1

Pytanie co robi firstNetworkCall i secondNetworkCall, bo raczej to nie zwraca justów jak u Ciebie. Wygląda na to, że kody są w jego poprzednich artykułach, do których nie mam dostępu bo skończył mi się limit na Medium :D

0
szatkus1 napisał(a):

Pytanie co robi firstNetworkCall i secondNetworkCall, bo raczej to nie zwraca justów jak u Ciebie. Wygląda na to, że kody są w jego poprzednich artykułach, do których nie mam dostępu bo skończył mi się limit na Medium :D

niestety w poprzednich również nie ma zawartości, a co powinno zwracać żeby zadziałało równolegle ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1