【问题标题】:How to poll a webservice at finite interval from android?如何从 android 以有限的时间间隔轮询 web 服务?
【发布时间】:2012-02-10 11:16:33
【问题描述】:

我正在开发一个 android 应用程序来显示通知。如何以有限的间隔(比如 10 分钟间隔)轮询 web 服务以检查任何更新并在 android 通知面板中显示为通知。

【问题讨论】:

    标签: android web-services notifications android-notifications android-alarms


    【解决方案1】:

    不需要需要服务。感觉自己破纪录了在这个用例中,服务将在 95% 的时间里无所事事,但仍在使用系统资源,更重要的是会耗尽电池电量。

    请查看我对使用 AlarmManager 中的警报的类似问题的回答:

    Running task periodicaly(once a day/once a week)

    编辑:

    查看 Android 开发网站上的本教程,了解如何实现通知:http://developer.android.com/guide/topics/ui/notifiers/notifications.html

    【讨论】:

    • 您可以将所有代码放入单个项目并部署为单个 APK。
    • 许多设备会为周期性后台任务带来麻烦,这些任务不是服务,因为它们包含了节电调整。
    【解决方案2】:

    Google C2DM 提供云到设备消息服务。您可以使用此服务将消息推送到所有注册的移动设备。这不仅可以提高性能,还可以确保在持续轮询服务器时电池不会耗尽。

    对于您的场景,您可以编写一个 java 类来定期轮询 Web 服务并使用 C2DM 服务将消息推送到您的 Android 手机,该消息可以显示为通知。查看 Vogella 在link 上的本教程。或者更好的是,如果您使用 Web 服务只是为了获取更新的详细信息,那么您可以避开 Web 服务,并在发生变化时直接调用 C2DM 推送服务将消息推送到所有注册的设备。

    希望这会有所帮助。 :)

    【讨论】:

    【解决方案3】:

    使用计时器,您可以在 e.x 的有限时间间隔后调用该 Web 服务

    Timer waitingTimer = new Timer();
        waitingTimer.schedule(new TimerTask() 
         {
            @Override
            public void run() 
            {
                runOnUiThread(new Runnable() 
                {
                    public void run() 
                    {
                        // code to hit xml after time interval
                    }
                }); 
            }
        },0,20000); // mention time interval after which your xml will be hit.
    

    这里的 20000 表示每 20 秒就会被击中一次。

    【讨论】:

    • 线程绝对不是在 android 中实现此目的的方式。它会坐在记忆中什么都不做,那是不好的。改用警报管理器
    【解决方案4】:

    定义一个服务,有一个带定时器的线程,在超时时调用 webservice。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-03
      • 1970-01-01
      • 1970-01-01
      • 2017-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多