如何从android有限间隔轮询web服务?

时间:2012-02-10 11:16:34

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

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

4 个答案:

答案 0 :(得分:9)

需要服务。我觉得自己像是破纪录。在这个用例中,服务将在那里停留95%的时间,但仍然使用系统资源,更重要的是耗尽电池。

请参阅我使用AlarmManager中的警报的类似问题的答案:

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

编辑:

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

答案 1 :(得分:6)

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

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

希望这有帮助。 :)

答案 2 :(得分:2)

使用计时器,您可以在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秒就会被击中。

答案 3 :(得分:0)

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