android - 在 android 的 Sqlite 数据库中插入记录后立即启动 API 调用
问题描述
我有一个要求,如果在本地 DB(Sqlite) 中插入的记录尽快应用程序触发 API 调用以将离线记录发送到服务器。我不想使用计时器和警报服务,因为即使本地数据库中没有离线记录,它们也会在后台连续运行。还有其他替代解决方案吗?
注意:目标 SDK 级别为 Andorid 8 版本。
解决方案
据我了解你的任务(一般) - 是如何在一些 Sqlite 表中插入新行时调用一些函数(例如一些sendNewRecord() )。
我想有 3 种替代方法可以在 Sqlite 中实现这样的任务:
- 在您放置 insert-new-data 代码的代码中的同一位置调用您的函数。我认为这是最明显和最简单的选择。我希望在您的应用程序中只有一个地方可以执行此操作(存储库模式或其类似物)。
- 将一些观察者(回调函数)放入您的表并处理表中的更改。那个更复杂的任务,据我所知,您会在每次更改表后收到此回调,识别表中的哪些行已更改将是另一项任务。使用现代 Room 框架和 LiveData 作为查询结果,您可以更严格地观察表中的变化,但是您仍然必须检测插入的行。
- 使用一些调度机制进行同步(Executor、Timer 等)。你写过这不是你的情况。
我建议你选择第一种方式。至少我看不出它的缺点。
推荐阅读
- perl - 运行 dzil build 时出现“未指定 -phase 或 -relationship”错误
- python - Unbale 使用 python 子进程通过管道从 grep 获取输出
- reactjs - 更新现有项目或将新项目添加到减速器 | React-Redux
- reactjs - 如何确定用户是否在谷歌地图 api 中搜索子地区、地区、州等进行反应?
- azure-sql-database - 是否有适用于 Iaas 或 Paas 的实时 rsync 示例?
- c# - VS 2019. 内部 Web 浏览器作为调试模式下的默认浏览器
- linux - WebDriverException:消息:未知错误:无法处理来自未知错误的扩展 #1:CRX 验证失败:3
- android - 如何从应用内订阅中获取订阅价格
- android - 如何用文本填充轮子,然后让它旋转(全部在 Flutter 中)?
- laravel - 我如何使用 vue js 和 laravel 在所见即所得编辑器中显示我的文章的正确格式