在我的应用中,每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");
}
}
答案 0 :(得分:3)
最好的办法是使用AlarmManager,因为它会代表您处理手机睡眠时运行任务所需的一切。在Google提供的ApiDemos中有一个使用此技术的演示。
简而言之,您可以让一个IntentService从AlarmManager捕获PendingIntent,然后下载Web数据。然后,只要想要刷新数据,您的Activity就可以获取此数据。或者,您的服务可以向活动发送信号以实际更新,因为新数据可用。
修改强>
答案 1 :(得分:1)
活动中的任务在手机处于待机模式时无效。如果您希望在手机待机时检索数据,请使用服务。