我知道这个问题被问了几次,但我还是不明白。实现这种操作的正确方法是什么 - 例如每 15 分钟从网络下载一些数据。即使在重新启动 android 后(无需用户启动应用程序),我也想运行此操作。我应该只使用 AlarmManager + Broadcast Receiver 还是 AlarmManager + Service (IntentService?) 还是什么?:)
问问题
2144 次
5 回答
2
要在 15 分钟后执行任务,您可以使用AlarmManager。
而且由于您需要在重新启动后继续,您需要额外的引导接收器。
所以你的代码流程如下
1.安排闹钟在您的应用程序启动时每 15 分钟触发一次。您的闹钟可以启动一项服务来执行您需要执行的任何任务。
2.再次启动BootReceiver的OnReceived,您必须安排您的警报。
于 2013-10-03T07:08:46.047 回答
1
还有一个选项ScheduledExecutorService
。
像这样:
private ScheduledExecutorService scheduler;
...
scheduler = Executors.newSingleThreadScheduledExecutor();
scheduler.scheduleAtFixedRate(new Runnable()
{
public void run()
{
// do your stuff
}
}, 0, 15, TimeUnit.MINUTES);
于 2013-10-03T07:10:01.177 回答
0
我认为你最好的选择是使用AlarmManager
此类提供对系统警报服务的访问。这些允许您安排您的应用程序在将来的某个时间点运行。当警报响起时,系统会广播已为其注册的 Intent,如果目标应用程序尚未运行,则会自动启动它。注册的闹钟在设备处于睡眠状态时会保留(并且可以选择在此期间唤醒设备,如果它们在此期间关闭),但如果它被关闭并重新启动,则会被清除。
有关更多详细信息,请查看AlarmManager的文档或参考此博客文章以了解它是如何实现的
于 2013-10-03T07:09:40.707 回答
0
// try this
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
// write your code here
}
});
}
},0,9000000);
// when no longer required call
timer.cancel();
于 2013-10-03T07:15:20.687 回答
-1
只需TimerTask
在特定的时间间隔内重复它。
//Declare the timer
Timer t = new Timer();
//Set the schedule function and rate
t.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
// Call your service or broadcasting or whatever here that is going to be repeated.
//Called each time when 1000 milliseconds (1 second) (the period parameter)
// Here you can specify that this action repeat after whatever time.
}
},
//Set how long before to start calling the TimerTask (in milliseconds)
0,
//Set the amount of time between each execution (in milliseconds)
1000);
于 2013-10-03T07:05:42.490 回答