我需要在后台每1小时重复一次任务(我正在向我的服务器发送一些信息)。
我尝试使用一个带有后延迟处理程序的服务,称之为自我。
handler = new Handler();
runable = new Runnable() {
@Override
public void run() {
try{
//sending info to server....
}
catch (Exception e) {
// TODO: handle exception
}
finally{
//also call the same runnable
handler.postDelayed(this, 1000*60*60);
}
}
};
handler.postDelayed(runable, 1000*60*60);
这不起作用,在1分钟的小时间间隔内工作正常,当我将其改为5分钟时,它工作了大约5次重复然后时间错误,一小时后服务关闭。
我想尝试使用AlarmManager但documentation 它说“从Android 4.4(API级别19)开始,所有重复警报都是不准确的” 有人知道它有多么不精确吗?是几秒钟? ,分钟? 我可以依靠这个按时上班吗?
是否有人在服务中重复任务有任何其他建议?
由于
答案 0 :(得分:2)
您可以使用此代码用于重复调用oncreate方法或任何其他东西
public void callAsynchronousTask() {
final Handler handler = new Handler();
Timer timer = new Timer();
TimerTask doAsynchronousTask = new TimerTask() {
@Override
public void run() {
handler.post(new Runnable() {
public void run() {
try {
onCreate();
} catch (Exception e) {
}
}
});
}
};
timer.schedule(doAsynchronousTask, 0, 1000); //execute in every 1000 ms
}