问题描述
我在我的程序中使用了类似的代码。我从 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 (将#修改为@)