我目前正在使用webservice同步开发Android应用程序,一切都运行顺利,但我需要创建一个后台更新服务,用于数据获取到数据库。最近几天,我一直在寻找如何实现这一目标的信息,我找到了许多解决方案,这让我非常困惑。
我使用asyncTask获取数据,它启动httpClient和I解析响应并将其保存到数据库。之后,我发送了一个意图来启动一个活动。简单的东西。
我想要一个服务,它会在应用程序未运行时获取数据。当用户启动应用程序时,可能会停止服务。
我设法用线程休眠写一个Service类,但这似乎是一个非常糟糕的解决方案。
我发现的另一个解决方案是使用pendingIntent和广播接收器。
我不确定发送广播意图是否足够安全。如果有人将他的手机插入调试器,他会看到每个意图广播,对吗?这意味着他/她可能会弄乱我的应用程序(比如发送广播意图,这会告知应用程序新数据已被提取,而实际上并非如此)。
我也不想让我的服务被系统杀死。
有没有简单有效的解决方案?我很难找到适合我需要的东西,而且我对Android编程很新,我自己编写。我找到了很多解决方案,但我真的不知道哪一个是“正确”的解决方案,这是最有效的。
答案 0 :(得分:3)
您应该使用AlarmaManager来安排定期任务。无需长时间运行服务。它只执行计划挂起的意图,并在所有执行完成后完成。
答案 1 :(得分:0)
为此,您可以使用Timer:
public class ServiceCount extends CountDownTimer
{
public ServiceCount(long millisInFuture, long countDownInterval)
{
super(millisInFuture, countDownInterval);
}
@Override
public void onFinish()
{
// update data
}
@Override
public void onTick(long millisUntilFinished)
{
Log.d("timer", "" + millisUntilFinished / 1000);
}
}
ServiceCount count = new ServiceCount((long) (1 * 60 * 1000), 1000); // 1 minute
count.start();