You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无互联网环境下Android Studio应用新增MySQL记录推送通知问题

局域网环境下MySQL新增记录推送通知的实现方案

方案1:数据库触发+本地后台服务推送

这是最可靠的方案,适合15台设备的局域网场景:

  • 给MySQL目标表添加触发器(Trigger):当有新记录插入时,将新增数据的关键信息写入专门的「通知事件表」
  • 在局域网内部署一个轻量后台服务(用Java/Python均可),持续轮询「通知事件表」,发现新事件后通过MQTT或WebSocket协议给所有Android设备推送消息
  • Android端集成对应客户端SDK,保持与后台服务的长连接,收到消息后调用系统通知API弹出通知

关键代码示例

  • MySQL触发器创建:
DELIMITER //
CREATE TRIGGER after_new_record_insert
AFTER INSERT ON your_target_table
FOR EACH ROW
BEGIN
    INSERT INTO notification_events (record_id, content, create_time)
    VALUES (NEW.id, CONCAT('新增记录:', NEW.title), NOW());
END //
DELIMITER ;
  • Android端收到MQTT消息后触发通知:
@Override
public void messageArrived(String topic, MqttMessage message) throws Exception {
    String content = new String(message.getPayload());
    // 构建系统通知
    NotificationCompat.Builder builder = new NotificationCompat.Builder(context, "NEW_RECORD_CHANNEL")
            .setSmallIcon(R.drawable.ic_notify)
            .setContentTitle("数据库新增记录")
            .setContentText(content)
            .setPriority(NotificationCompat.PRIORITY_DEFAULT);

    NotificationManagerCompat.from(context).notify(1001, builder.build());
}

方案2:Android端直接轮询数据库(简易方案)

如果不想额外部署后台服务,可让设备定期轮询MySQL:

  • 每次查询时记录当前最大的记录ID,存储在SharedPreferences中
  • 下次查询先对比本地存储的ID与数据库最新ID,若后者更大则获取新增数据并触发通知
  • 缺点:频繁轮询会消耗设备资源和数据库连接,仅适合记录新增频率低的场景

方案3:MySQL UDF+局域网UDP广播

借助MySQL用户自定义函数(UDF),在触发器触发时直接发送UDP广播:

  • 编写MySQL UDF实现UDP广播逻辑,触发器触发时调用该函数发送通知消息
  • Android端监听指定UDP端口,收到广播后弹出通知
  • 注意:UDP广播稳定性受局域网路由器设置影响,可能存在跨网段接收失败的问题

核心注意事项

  • 确保所有设备与MySQL服务器在同一局域网,网络互通
  • Android 13及以上需单独申请POST_NOTIFICATIONS权限
  • 若用MQTT/WebSocket方案,后台服务需部署在持续开机的设备上(如工控机、服务器)

内容的提问来源于stack exchange,提问作者Kineh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 08:12:06