我正在使用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应用听取了答案。
所以我的问题是:
如何让提取过程在后台运行,并让它在每个给定的时间内运行?
谢谢。
修改
显然,定期向服务器发出请求是一种不好的做法。所以相反,我会按需处理它们。谢谢大家。
答案 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。然后,服务可以做任何你需要的事情。需要进行一些研究才能最好地组装这些组件。