android - 如何在传入数据时唤醒 Android

标签 android networking service wakelock

我想要一个 Android 服务,它正在监听数据(我已经尝试过 TCP 和 UDP)以在数据到达时唤醒服务/手机。

目前,当 IP 数据到达时手机处于休眠状态, 数据丢失。这对安卓来说正常吗?我看到每天好几次睡 2 小时以上,睡着时睡 7 小时以上。

GCM 是否提供了在消息到达时唤醒服务/电话的解决方案。

我需要消息在从服务器发送后的几秒钟内显示出来。

难道这只能让 CPU 整天保持运行才能实现吗? GSM 调制解调器是否在数据到达时没有中断?

最佳答案

据我了解,如果您通过移动数据与服务器建立了出色的套接字连接,则该套接字连接在休眠模式下保持不变,传入的数据包会将手机从休眠状态唤醒模式(简要地)传递数据。

对于 WiFi 也是如此(并且大概也不适用于有线以太网)。您需要持有一个 WakeLock 和一个 WifiLock

Does GCM provided a solution which wakes up a service/phone when a message arrives.

是的,但是...

I need messages to be displayed within a few seconds of them being sent from the server.

首先,GCM 没有服务级别保证。我不知道有任何解决方案可以做到这一点,包括您可能自己推出的任何解决方案(例如 MQTT)。

其次,您不知道设备是否能够接收任何此类消息(GCM 或其他),因为设备可能已关闭、处于飞行模式等。

关于android - 如何在传入数据时唤醒 Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16897387/

相关文章:

android 在线绘制图像

java - 如何在 API 26 中添加音乐播放器通知

android:如何将数字格式化为带括号的电话

java - 这是将 MVVM 结构与 ViewModel 和 RecyclerView 一起使用而没有任何问题的正确方法吗?

java - 通过 Java NIO API 传输文件

android - alarmManager 唤醒时更改 ImageView 资源

android - 以编程方式停止 GcmListenerService

c - 通过C程序获取Linux中的网络接口(interface)类型

UFW 阻止了 Docker 本地主机连接

web-services - 邮件解析云服务