首页 > 解决方案 > 如何同时使用 Rx-Java 和 Retrofit 请求多个请求?

问题描述

我想同时使用改造从服务器获得 3 个以上的响应。但只有 2 个请求会有响应。

我正在使用改造和 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;
        }
}

我刚收到 3 个回复中的 2 个。有时我得到超过 2 个。我不知道为什么会这样。

标签: androidrequestrx-javaretrofit2

解决方案


推荐阅读