如何每2分钟从android中的DB中获取数据?

时间:2015-12-01 09:12:54

标签: android database

我开发了一个简单的Android应用程序,并且能够通过http请求从数据库发布和获取信息,并使用AsyncTask执行此操作。我的问题是,如果我想每隔5分钟从数据库中查询一下信息,或者检查是否有任何新数据已经发布到数据库中我怎么能在android中完成?

2 个答案:

答案 0 :(得分:0)

使用 CountDownTimer 检查this

300000ms = 5分钟

 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();

使用TimerTask

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.

答案 1 :(得分:0)

我不认为每隔5分钟轮询数据库是一个很好的解决方案。这是浪费资源。

请考虑使用某种机制,在DB中的某些内容发生更改时通知您,以便您的UI可以正常刷新。

例如,在某些项目中,我使用Otto在数据库中插入新项目时发送事件。我的片段订阅默认总线,以便他们知道什么时候发生了变化。

优点:表现。该应用仅在必须

时才有效

缺点:嗯,真的不多。简单的解决方案就是说:“好的,有些东西已经改变了。让我们抛出UI中显示的所有当前信息并向DB发出新的查询!”。但漂亮的解决方案是说:“好的,有些东西有变化。有什么变化,如何将新信息添加到UI?”

但这取决于应用上下文;)