首页 > 解决方案 > 在 android 的 Sqlite 数据库中插入记录后立即启动 API 调用

问题描述

我有一个要求,如果在本地 DB(Sqlite) 中插入的记录尽快应用程序触发 API 调用以将离线记录发送到服务器。我不想使用计时器警报服务,因为即使本地数据库中没有离线记录,它们也会在后台连续运行。还有其他替代解决方案吗?

注意:目标 SDK 级别为 Andorid 8 版本。

标签: androidsqlitebackground-task

解决方案


据我了解你的任务(一般) - 是如何在一些 Sqlite 表中插入新行时调用一些函数(例如一些sendNewRecord() )。

我想有 3 种替代方法可以在 Sqlite 中实现这样的任务:

  1. 在您放置 insert-new-data 代码的代码中的同一位置调用您的函数。我认为这是最明显和最简单的选择。我希望在您的应用程序中只有一个地方可以执行此操作(存储库模式或其类似物)。
  2. 将一些观察者(回调函数)放入您的表并处理表中的更改。那个更复杂的任务,据我所知,您会在每次更改表后收到此回调,识别表中的哪些行已更改将是另一项任务。使用现代 Room 框架和 LiveData 作为查询结果,您可以更严格地观察表中的变化,但是您仍然必须检测插入的行。
  3. 使用一些调度机制进行同步(Executor、Timer 等)。你写过这不是你的情况。

我建议你选择第一种方式。至少我看不出它的缺点。


推荐阅读