定期从远程数据库更新本地数据库的最佳方法

时间:2016-02-17 20:38:30

标签: android mysql android-volley

我正在使用Volley库从远程数据库中提取数据。

我已将提取过程锁定在ProgressDialog中,因为如果没有,我发现数据可能会或无法到达应用程序。通过锁定它,我确保数据显示给用户。

现在,我已经实现了一个本地数据库,因此用户不需要每次从远程数据库中获取相同的信息。

获取的信息仅在满足某个条件时才会出现。这是SQL:

SELECT *
FROM user_meals
WHERE CURDATE() BETWEEN date_of_meal AND DATE_ADD(date_of_meal, INTERVAL 14 DAY)
AND email = '$email'
ORDER BY date_of_meal DESC
LIMIT 1

过程如下:Android应用程序向PHP文件发送请求 - > PHP文件运行SQL - > PHP文件答案 - > Android应用听取了答案。

所以我的问题是:

如何让提取过程在后台运行,并让它在每个给定的时间内运行?

谢谢。

修改

显然,定期向服务器发出请求是一种不好的做法。所以相反,我会按需处理它们。谢谢大家。

3 个答案:

答案 0 :(得分:1)

根据定义,定期提取是very bad practice

所以你应该只在需要时才这样做 - 如果你已经激活收音机发送,那么至少可以背上其他东西。 无论如何,正确的方法是创建一个服务(或意图服务),您发布数据并将其同步到网络(我在领域和远程后端成功使用它)

答案 1 :(得分:0)

您可以使用处理程序重复运行它:

final Handler mHandler = new Handler();
mHandler.postDelayed(new Runnable() {
  @Override
  public void run() {
    if (!isStopped){

        //Do your work here

        mHandler.postDelayed(this, 5000);
    }
  }
}, 0);

请参阅here

答案 2 :(得分:0)

有很多方法可以做到这一点,但一种解决方案可能是使用AlarmManager来安排重复意图传递给您在应用中创建的Service。然后,服务可以做任何你需要的事情。需要进行一些研究才能最好地组装这些组件。