Как запросить несколько запросов с помощью Rx-Java и Retrofit одновременно? - PullRequest
0 голосов
/ 16 мая 2019

Я хочу получить более 3-х ответов от сервера, использующего модернизацию одновременно. но только 2 запроса будут иметь ответ.

Я использую Retrofit и Rxjava.

Также я использовал метод .clone () для дублирования запроса.

Нажмите (https://futurestud.io/tutorials/retrofit-2-reuse-and-analyze-requests-2)!

Это ResponseActivity:

public class ResponseActivity extends AppCompatActivity {
    private ResponseViewModel mViewModel;
    private static final String TAG = "MainActivity";
    private ProgressBar progressBar;
    protected CompositeDisposable compositeDisposable = new CompositeDisposable();


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.response_main);
        mViewModel = new ResponseViewModel();
        progressBar = findViewById(R.id.pb_response);
    }

    @Override
    protected void onResume() {
        super.onResume();
  mViewModel.getText()
                .observeOn(AndroidSchedulers.mainThread())
                .subscribeOn(Schedulers.io())
                .subscribe(new MySingleObserver<Text>(compositeDisposable) {
                    @Override
                    public void onSuccess(Text value) {
                        Log.i(TAG, "onSuccess: " + value.getText());
                    }
                });
        mViewModel.getText()
                .observeOn(AndroidSchedulers.mainThread())
                .subscribeOn(Schedulers.io())
                .subscribe(new MySingleObserver<Text>(compositeDisposable) {
                    @Override
                    public void onSuccess(Text value) {
                        Log.i(TAG, "onSuccess: " + value.getText());
                    }
                });

        mViewModel.getText()
                .observeOn(AndroidSchedulers.mainThread())
                .subscribeOn(Schedulers.io())
                .subscribe(new MySingleObserver<Text>(compositeDisposable) {
                    @Override
                    public void onSuccess(Text value) {
                        Log.i(TAG, "onSuccess: " + value.getText());
                    }
                });
    }


    @Override
    protected void onPause() {
        super.onPause();
        compositeDisposable.clear();
    }
}

А это моя ViewModel


public class ResponseViewModel extends ViewModel {
    private static final String TAG = "MainActivity";

    public Single<Text> getText() {
        Single<Text> call= apiService.getText();
        return call;
        }
}

Я только что получил ответ 2 из 3. иногда я получил больше, чем 2. Я не знаю, почему это происходит.

...