【问题标题】:Short interval alarms in AndroidAndroid中的短间隔警报
【发布时间】:2016-04-07 02:16:24
【问题描述】:

我知道我们无法在 Android 中设置短时间间隔的重复警报,因为它会耗尽电池并具有其他此类影响。好吧,从技术上讲你可以,但 android 会以“可疑的持续时间短”为由自动将其推至一分钟。

那么,像 WhatsApp 或 Facebook 这样的应用程序究竟是如何不断更新我们的消息或新闻源的呢?我以为他们每秒都会发出警报,但显然这是不可能的,因为操作系统无论如何都会将它推到一分钟。无论如何,使用处理程序/线程是没有问题的,因为它们不会在应用程序关闭时触发,但即使应用程序关闭,WhatsApp 也会更新您的消息。

那么这些应用如果不使用AlarmManager来完成上述任务,具体是用什么来完成上述任务的,如果它们使用AlarmManager,他们如何设置短时长呢?

【问题讨论】:

  • 我认为他们在后台运行服务以捕获来自服务器的通知。
  • 那么如果你有一个Handler在服务中运行,它会在应用关闭的情况下运行吗?
  • 是的,我想。但是为什么你需要一个 Handler ?如果是推送通知,您只需在接收器收到通知时运行代码,然后根据您的需要更新内容。

标签: android


【解决方案1】:

他们有一项使用推送消息的服务。所以基本上他们打开一个到服务器的套接字连接并休眠,直到服务器向他们发送数据。它是一种中断机制,而不是轮询。

【讨论】:

  • 连接不会隐式终止?
  • 套接字不会隐式终止。如果您希望它们关闭,您需要明确地这样做。除非您编写它们,否则它们甚至不会超时。
  • 那么当用户更改wifi或IP地址时会发生什么?因为通常他们仍然会在没有打开应用程序的情况下收到更新,对吗?我认为他们使用了推送通知,如果是这种情况,则不需要套接字连接。
  • 推送通知一个套接字。这就是它的实现方式。你认为没有它是如何工作的?
  • 真的吗?我不知道这个。但是,当人们更改 IP 地址时,它是如何工作的呢?因为我只知道建立一个socket连接,你需要双方的地址对吧?
【解决方案2】:

不特定于任何服务,如 WhatsApp 或 Facebook,整个系统背后的想法是这样的。

特别是(或一般而言)Android,

这样,您将能够使用这些服务,以这种方式发送消息。

您的服务器 ---> Google GCM 服务 ---> 目标设备

发送消息时,不要包含整个消息本身。你应该通过发送简单的消息来通知目标设备它有新的信息要下载来保持它的轻量。

在您的设备应用程序中,您设置了侦听这些推送通知的权限和意图。每当有新消息时,您都会向服务器发出请求以接收相应的消息。

这里有一个深入解释的指南:https://github.com/codepath/android_guides/wiki/Google-Cloud-Messaging

干杯!快乐编程!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多