Android 如何将从API删除记录应用于连接到此API的应用程序?

Android 如何将从API删除记录应用于连接到此API的应用程序?,android,sql-delete,android-room,android-architecture-components,Android,Sql Delete,Android Room,Android Architecture Components,我的Android应用程序已连接到API。它获取数据,存储在设备的数据库中,如果设备没有连接,它会将本地数据库中的数据显示为性能良好的应用程序。现在的问题是,如果我删除远程服务器中的某些内容,它将不会反映在设备的数据库中。这是一个Django API,MySQL托管在PythonAnywhere.com上 下面是活动存储库中获取数据并将其存储在设备数据库中的方法 fun fetchPosts() { remote.fetchPosts() .doOnNext { post

我的Android应用程序已连接到API。它获取数据,存储在设备的数据库中,如果设备没有连接,它会将本地数据库中的数据显示为性能良好的应用程序。现在的问题是,如果我删除远程服务器中的某些内容,它将不会反映在设备的数据库中。这是一个Django API,MySQL托管在PythonAnywhere.com上

下面是活动存储库中获取数据并将其存储在设备数据库中的方法

fun fetchPosts() {
    remote.fetchPosts()
        .doOnNext { posts -> local.insert(posts) }
        .onErrorResumeNext { _: Throwable -> Observable.fromCallable { local.fetchPosts() } }
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(
            { outcome.success(it) },
            { error: Throwable -> outcome.failed(error) }
        ).addTo(compositeDisposable)
}

有什么事要做吗?我想清除本地数据库中的所有数据并插入新数据不是很好,但我想不出其他替代方法。

Hello@gamofe。我认为您可以尝试实现一些条件来检查本地数据库中的项是否不存在于服务器响应中,然后您应该删除它。其他选项是在获取数据时清除本地数据库,然后插入上次通话中的所有项目。Hello@gamofe,它类似于我的问答应用程序。我正在使用此算法。算法是get all question及其版本(任何更改时版本都会增加)。1.插入:如果问题id未包含在本地数据库中,则插入2.更新:如果问题id包含但不等于本地问题版本,则更新3.获取本地数据库问题id并删除服务器中的所有id。删除ID后删除它们(因为服务器中不包含ID)。希望如此helps@gamofe它对你有帮助吗?是的,它给出了使用Kotlin的
contentEquals
减号的想法。好的@gamofe,祝你好运。我正在使用Java