我知道问题被问过几次,但我仍然不明白。 实现这种操作的正确方法是什么 - 例如从网上下载一些数据,例如每15分钟一次。我想在重启android之后运行此操作(无需用户启动应用程序)。 我应该只使用AlarmManager +广播接收器或AlarmManager +服务(IntentService?)还是什么? :)
答案 0 :(得分:2)
要在15分钟后执行任务,您可以使用AlarmManager。
由于您需要在重新启动后继续操作,因此需要额外的启动接收器。
所以你的代码如下所示
1.计划在应用程序启动时每15分钟发出一次警报。您的警报可以启动服务以执行您需要执行的任务。
2.再次接收BootReceiver,您必须安排警报。
答案 1 :(得分:0)
我认为您最好的选择是使用AlarmManager
此类提供对系统警报服务的访问。这些允许 你安排你的应用程序在运行中的某个时刻运行 未来。当闹钟响起时,已注册的意图 因为它是由系统广播,自动启动目标 应用程序,如果它尚未运行。注册的警报是 在设备处于睡眠状态时保留(并且可以选择唤醒设备) 设备如果在那段时间内关闭,但如果它会被清除 关闭并重新启动。
有关详细信息,请查看AlarmManager的文档或参阅此blog post以了解其实施方式
答案 2 :(得分:0)
还可以选择ScheduledExecutorService
。
像这样:
private ScheduledExecutorService scheduler;
...
scheduler = Executors.newSingleThreadScheduledExecutor();
scheduler.scheduleAtFixedRate(new Runnable()
{
public void run()
{
// do your stuff
}
}, 0, 15, TimeUnit.MINUTES);
答案 3 :(得分: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();
答案 4 :(得分:-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);