Android rxJava 2完成任务后如何退订

时间:2020-07-19 09:56:46

标签: android database kotlin android-room rx-java2

我有从房间数据库中删除所有用户的代码。为此,我正在使用rxJava2。问题是我订阅了接收所有用户的权限,毕竟删除了所有用户,但是我不知道如何取消订阅以再次接收有关用户的信息。

fun deleteUser(user: User) {
    Completable.fromAction {
        appRepository.deleteUser(user);
        appRepository.deleteByUser(user.userName)
        objectiveActionManager.saveObjective(null)
        profileActionManager.saveProfile(null)
    }.subscribeOn(io()).subscribe()
}

fun deleteAllUsers() {
     getAllUsers().subscribeOn(io()).subscribe { users ->
        users.forEach { deleteUser(it) }
    }
}

fun getAllUsers(): Observable<List<User>> {
    return appRepository.getAllUsers()
            .observeOn(AndroidSchedulers.mainThread())
}

1 个答案:

答案 0 :(得分:1)

您通过订阅分配了Disposable

 val disposable: Disposable = getAllUsers().subscribeOn(io()).subscribe { users ->
            users.forEach { deleteUser(it) }
        }

,当您不想再收到任何更新或类的生命周期结束时,您可以这样做:

disposable.dispose()