如何使用Room和RxJava插入数据?

JoS*_*Sem 6 database android

db.activitiesDao().insertStep(step);
Run Code Online (Sandbox Code Playgroud)

这将返回臭名昭着的错误:

java.lang.IllegalStateException: Cannot access database on the main thread since it may potentially lock the UI for a long period of time.
Run Code Online (Sandbox Code Playgroud)

我是RxJava的新手,不想使用AsyncTask.

Mat*_*ron 9

尝试这样的事情.

Observable.fromCallable(() -> db.activitiesDao().insertStep(step))
        .subscribeOn(Schedulers.io())
        .subscribe(...);
Run Code Online (Sandbox Code Playgroud)

或者,如果有无效回报,你可以这样做:

Completable.fromRunnable(new Runnable(){
        db.activitiesDao().insertStep(step)
    })
    .subscribeOn(Schedulers.io())
    .subscribe(...);
Run Code Online (Sandbox Code Playgroud)