1
Observable observable = Observable.from(backToArray(downloadWebPage("URL")))
            .map(new Func1<String[], Pair<String[], String[]>>() {
                @Override
                public Pair<String[], String[]> call(String[] of) {
                    return new Pair<>(of,
                            backToArray(downloadWebPage("URL" + of[0])).get(0));
                }
            });

    observable.subscribeOn(Schedulers.newThread()).observeOn(AndroidSchedulers.mainThread()).subscribe(
            (new Observer<Pair>() {

                @Override
                public void onCompleted() {
                    // Update user interface if needed
                }

                @Override
                public void onError(Throwable t) {
                    // Update user interface to handle error
                }

                @Override
                public void onNext(Pair p) {
                   offices.add(new Office((String[]) p.first, (String[]) p.second));
                }
           }));

これが実行され、android.os.NetworkOnMainThreadException が発生します。subscribeOn() メソッドで設定された新しいスレッドを実行することを期待しています。

4

3 に答える 3

0

から変更する必要があります

**observable.subscribeOn(Schedulers.newThread())**

**observable.subscribeOn(Schedulers.io())**
于 2015-12-23T09:58:40.103 に答える