【发布时间】:2021-03-18 05:43:59
【问题描述】:
我正在尝试用 RxJava 替换 AsyncTask,因为 Async 在 Android 11 中已被弃用。但是我无法让 RxJava 与 Room 一起使用,
这是当前使用 Asynctask 的工作代码:
在存储库中:
public void insertItems(List<Items> items){
new insertItemsAsyncTask(PrjDao).execute(items);
}
private static class insertItemAsyncTask extends AsyncTask<List<Items>, Void, Void>{
private PrjDao prjDao;
private insertItemAsyncTask(PrjDao prjDao){
this.prjDao = prjDao;
}
@Override
protected Void doInBackground(List<Items>... lists) {
prjDao.insertItems(lists[0]);
return null;
}
}
在 DAO 中
@Insert
void insertItems(List<Items> items);
我将存储库代码替换为:
public void insertItems(List<Items> items){
Completable.fromAction(() -> prjDao.insertItems(items)).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
.subscribe(new CompletableObserver() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onComplete() {
}
@Override
public void onError(@NonNull Throwable e) {
}
});
}
但是它不起作用,即使我设法在 onComplete 中获得日志输出。
【问题讨论】:
标签: android android-asynctask rx-java android-room