RxJava CompositeDisposable 可以在 CompositeDisposable 中使用吗?

问题描述

我在我的程序中使用了类似的代码。我从 API 接收数据,基于它创建一个用户,然后将其写入数据库

@Insert(onConflict = OnConflictStrategy.REPLACE)
Completable setUser(User data); //DB method
...

@POST("/authlogin")
Single<UserResponse> getUserData(@Body JsonObject phone); //API method
...

private Compositedisposable disposable = new Compositedisposable();

...

disposable.add(
  apiclient.getUserData(jsonPhone)
    .subscribeOn(Schedulers.io())
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe(
      userResponse -> {
        if (userResponse.Result) {
          User newUser = new User(phone);
          newUser.setPIB(userResponse.userpib);
          newUser.setCategory(userResponse.actype);

          disposable.add(
            userviewmodel.setUser(newUser)
              .subscribeOn(Schedulers.io())
              .observeOn(AndroidSchedulers.mainThread())
              .subscribe(
                () -> { Log.d(TAG,"ok"); },throwable -> Log.e(TAG,"not ok",throwable)
              )
          );
        }
      },throwable ->  Log.e(TAG,throwable)
    )
);

我只能通过对每个方法使用 Compositedisposable 才能完成此任务。但我不确定这是否是正确的方法。 另外,添加越来越多的Compositedisposable用于其他与API的交互,问题开始出现 “跳过了 63 帧!应用程序可能在其主线程上做了太多工作。”

应用程序很慢,我认为原因是线程使用不正确。但是怎么做才是正确的呢?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)