如何在android中每隔2分钟从DB中获取数据?
我开发了一个简单的android应用程序,能够通过http请求从数据库发布和获取信息,并使用AsyncTask完成这项工作。我的问题是,我是否想每5分钟从数据库中轮询一次信息,或者检查是否有任何新数据已发布到数据库中?我如何在android中做到这一点 退房 3000000毫秒=5分钟如何在android中每隔2分钟从DB中获取数据?,android,database,Android,Database,我开发了一个简单的android应用程序,能够通过http请求从数据库发布和获取信息,并使用AsyncTask完成这项工作。我的问题是,我是否想每5分钟从数据库中轮询一次信息,或者检查是否有任何新数据已发布到数据库中?我如何在android中做到这一点 退房 3000000毫秒=5分钟 CountDownTimer chkDb= new CountDownTimer(300000, 1000) { public void onTick(long millisUntilF
CountDownTimer chkDb= new CountDownTimer(300000, 1000) {
public void onTick(long millisUntilFinished) {
mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
}
public void onFinish() {
mTextField.setText("done!");
//code for db check
chkDb.start();//start again after 5 min
}
}.start();
或
使用
我不认为每5分钟轮询一次DB是一个好的解决方案。这是浪费资源
而不是这样,考虑使用一些机制来通知你,当数据库中的某些东西发生变化时,你的UI可以正常刷新。 例如,在一些项目中,我曾经在DB中插入新项时发送事件。我的片段订阅了一个默认的总线,这样当某些内容发生变化时,它们就会知道
优点:性能。该应用程序只有在必要时才能工作 缺点:嗯,其实不多。简单的解决方法是说:“好的,有些东西已经改变了。让我们抛出UI中显示的所有当前信息,并对DB进行新的查询!”。但是,nice的解决方案是:“好的,有些东西已经改变了。什么已经改变了,我怎样才能将新信息添加到用户界面?”但这取决于应用程序上下文;) 这将与asyncTask一起工作。我在发送http get请求时使用asyncTask,在执行短操作时应使用read async当你说CallYourMethod时这就是我执行http get请求的地方?是的,请使用另一个方法执行所有http请求或数据库检查,并在countdowntimer或TimerTask中调用该方法谢谢,我还看到stopTask方法,它什么时候被调用?当你想在中间中断计时器时,比如取消计时器,但在你的情况下,它看起来没有用。有趣的是,以前从未使用过的otto将查看它。你有关于如何实现OTT的教程或示例吗?其实很简单。你可以查看一些信息,但一旦你开始使用它,你就会学得很快
private TimerTask mTimerTask;
private Timer t = new Timer();
public void doTimerTask() {
mTimerTask = new TimerTask() {
public void run() {
handler.post(new Runnable() {
public void run() {
callYourMethodHere();
Log.i("TIMER", "TimerTask run");
}
});
}
};
// public void schedule (TimerTask task, long delay, long period)
t.schedule(mTimerTask, 500, 1000); //
}
public void stopTask() {
if (mTimerTask != null) {
Log.i("TIMER", "timer canceled");
mTimerTask.cancel();
}
}
task -- This is the task to be scheduled.
delay -- This is the delay in milliseconds before task is to be executed.
period -- This is the time in milliseconds between successive task executions.