每隔X秒从网络获取数据

时间:2011-11-03 14:46:54

标签: android background

在我的应用中,每30秒我必须从网上重新加载内容。问题是这个功能在一段时间内工作正常,但在那之后(或当设备处于待机状态时)内容在5秒,7秒后重新加载......在不同的时刻,我不明白为什么它发生了。

这是我的代码:

on onCreate()方法:

        handler1 = new Handler();
        t1 = new Timer();
        doReload1();

其中doReload1()是:

public void doReload1() {

        scanTask1 = new TimerTask() {
            public void run() {
                handler1.post(new Runnable() {
                    public void run() {
                        System.out.println("Every 30 sec getPlaylist");                     


                    }
                });
            }
        };

        t1.schedule(scanTask1, 300, 30000);
        try {
            GetPlaylists(); //method for get data from web
        } catch (Exception e) {
            System.out.println("You are in catch");
        }
    }

2 个答案:

答案 0 :(得分:3)

最好的办法是使用AlarmManager,因为它会代表您处理手机睡眠时运行任务所需的一切。在Google提供的ApiDemos中有一个使用此技术的演示。

简而言之,您可以让一个IntentService从AlarmManager捕获PendingIntent,然后下载Web数据。然后,只要想要刷新数据,您的Activity就可以获取此数据。或者,您的服务可以向活动发送信号以实际更新,因为新数据可用。

修改

Direct link to google example of using Alarms

答案 1 :(得分:1)

活动中的任务在手机处于待机模式时无效。如果您希望在手机待机时检索数据,请使用服务。