【问题标题】:Android Polling from a Server periodicallyAndroid 定期从服务器轮询
【发布时间】:2012-07-31 12:33:01
【问题描述】:

我想每 x 分钟从服务器中提取一些数据。如果信息包含某些信息,我想创建一个通知。即使应用程序在后台或手机处于睡眠状态,我也希望进行此轮询。我有几个关于 android 轮询的问题。

  • 最好的方法是什么?我应该使用一个
    IntentService、AlarmManager 还是别的什么?

  • 我应该多久轮询一次数据?我想保留它 相对频繁,比如每 10 分钟一次。

【问题讨论】:

    标签: android polling


    【解决方案1】:

    您可以使用 Handler 来监听服务器。例如请查看Run code over and over

    【讨论】:

      【解决方案2】:

      您会想要使用诸如云到设备消息传递 (C2DM) 之类的东西(在 iPhone 世界中也称为推送通知)

      可以在http://blog.mediarain.com/2011/03/simple-google-android-c2dm-tutorial-push-notifications-for-android找到一个很棒的教程

      【讨论】:

      【解决方案3】:

      我倾向于AlarmManager,因为我尽量不运行持续运行的服务,除非我真的需要,但这确实取决于你将如何使用它。

      如果是我,我会(基于有限的描述):-

      1. 设置一个 AlarmManager 以在 10 分钟内触发。
      2. 为响应警报,启动轮询数据的服务。
      3. 在轮询后,它应该设置一个新的警报,并在 10 分钟后再次触发。
      4. 服务自行关闭。

      【讨论】:

      • 这听起来是个不错的解决方案,我会试试看。那么每 2 分钟调用一次警报服务会不会对手机的电池寿命造成很大压力?
      • AlarmManager 不会,但您的轮询代码很可能会。它将保持设备不断唤醒。
      • 另外,如果我将 AlarmManager 设置为每 10 分钟左右关闭一次,我不能只在 AlarmManager 中进行轮询而不是启动服务吗?
      • 警报管理器仅在指定时间触发意图。然后,您将以最适合您的情况的方式处理意图。服务是有意义的,因为没有 UI,并且不太可能被操作系统杀死。
      【解决方案4】:

      您可以创建一个thread 来执行此操作。在您的运行方法中,您可以创建一个每 10 分钟轮询一次服务器的循环。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-31
        • 1970-01-01
        • 1970-01-01
        • 2015-04-06
        • 1970-01-01
        • 2014-08-24
        • 1970-01-01
        • 2021-12-29
        相关资源
        最近更新 更多