【问题标题】:How to notify my android app when something change in MySQL DatabaseMySQL数据库发生变化时如何通知我的android应用
【发布时间】:2019-06-17 20:37:58
【问题描述】:

我对 MySQL 中的实时通知有疑问。 我希望当 MySQL db 的特定表发生变化时,db 通知我的 android 应用程序做某事。

可以吗?我听说触发器可以提供帮助,但我在网络上没有找到任何相关信息,尤其是对于 android。

我正在为大学的一个 android 项目创建一个实时聊天应用程序。在项目中需要使用servlet,所以我的servlet向数据库发出请求并将数据发送到应用程序。为此,应用程序每秒向 servlet 发出 GET 请求以获取新消息。我想避免发出这些请求并仅在数据库发生更改时才更新消息列表。我知道它可以通过例如 firebase 来完成,但是必须使用 servlet 我想知道是否有办法在发生这种变化时通知应用程序。

消息被插入到数据库中,并带有对更新数据库的 servlet 的 POST 请求;有关消息的信息取自应用程序中的编辑文本,并使用发送按钮发出请求,因此我要做的就是在数据库中检测到新消息时推送 android 应用程序。

【问题讨论】:

  • 1.在 servlet 的 init 方法启动时将所有消息加载到缓存(HashMap 等)中,并使您的 android 应用程序访问该缓存。 2. 每当 mysql 的状态发生变化时,即有人添加新消息,首先更新缓存中的消息,以便您的 android 应用程序始终使用最新的消息数据。 3.稍后更新数据库中的缓存更改。最后你问你要通知应用程序,以便你可以随时使用 FCM 通知。
  • 好的,我已经在 init 方法中将 db 数据保存在缓存中,但是如何在我的 SQL db 中使用 FCM 通知? @OnkarMusale
  • 当数据库状态发生变化,即有人添加新消息时,您可以向安卓应用发送 FCM 通知。
  • 好吧,我明白我必须做什么,但我怎么做是个问题。我认为要发送此通知,我可以在数据库中使用触发器,但我不知道,我在 @OnkarMusale 之前从未使用过 FCM 通知
  • 好的,时间太长了。告诉我你的数据库结构是如何变化的。如何插入新消息。 ?如果是这样,正在使用 api 添加或更改数据库结构。只需在执行插入消息查询后添加 Java FCM 代码。通过编辑在您的问题中简要解释它。

标签: android mysql database servlets triggers


【解决方案1】:

大概你有一些代码组件向数据库发送命令。如果是,那么您可以在其中添加代码以通过 websockets 或类似的方式将通知发布到您的应用程序。数据库中的触发器是有代价的,如果需要大量触发器,则应避免使用它们。 如前所述,该应用程序不断轮询,寻找变化也很昂贵,最好避免。

【讨论】:

  • 我知道这不是最佳实践,但我只问是否可以这样做,以及如何做到。
【解决方案2】:

“有可能吗?”问题总是很难回答。答案几乎总是“是”,但“是否可取”、“这是个好主意”、“是否推荐”,这就是它变得更加复杂的地方。我不知道 MySQL 数据库更改可以在更改后通知单个 Android 应用程序安装的任何方式。但是,Android 应用程序的运行实例可以轮询 MySQL 数据库并查找表的结构,如果该表的结构与上次轮询时不同,它可以做一些事情。

这会产生很大的开销,让应用程序不断轮询 MySQL 数据库以检查表的结构。这会对您的 MySQL 安装增加很多要求,占用大量应用用户的带宽和数据计划。

所以,“有可能吗”,是的。 '是否推荐',不。

一个问题是,您认为表结构可能发生变化的情况是什么?这种情况发生的频率如何?许多人所做的只是在应用程序启动一个新会话时检查一次数据库的表结构。如果在启动时检测到更改,它可以对其逻辑进行必要的本地更改,然后假设结构将在会话的其余部分保持不变。这将消除我之前提到的持续轮询和其他负面行为。

【讨论】:

  • 我正在为大学的一个 android 项目创建一个实时聊天应用程序。在项目中需要使用servlet,所以我的servlet向数据库发出请求并将数据发送到应用程序。为此,应用程序每秒向 servlet 发出 GET 请求以获取新消息。我想避免发出这些请求并仅在数据库发生更改时才更新消息列表。我知道它可以通过例如 firebase 来完成,但是必须使用 servlet 我想知道是否有办法在发生这种变化时通知应用程序。
猜你喜欢
  • 1970-01-01
  • 2010-09-20
  • 1970-01-01
  • 2018-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-09
相关资源
最近更新 更多