0

我目前正在开发具有 web 服务同步的 Android 应用程序,并且一切运行顺利,但我需要创建一个后台更新服务,用于将数据提取到数据库。过去几天,我一直在寻找如何完成此任务的信息,并找到了许多解决方案,这让我非常困惑。

我正在使用 asyncTask 获取数据,它启动 httpClient 并解析响应并将其保存到数据库中。之后,我发送了启动 Activity 的意图。简单的东西。

我想要一个服务,它会在应用程序未运行时获取数据。当用户启动应用程序时,可能会停止服务。

我设法编写了一个带有线程睡眠的服务类,但这似乎是一个非常糟糕的解决方案。

我发现的另一个解决方案是使用 pendingIntent 和广播接收器。

我不确定发送广播意图是否足够安全。如果有人将他的手机插入调试器,他会看到每一个意图广播,对吗?这意味着他/她可能会弄乱我的应用程序(例如发送广播意图,这将通知应用程序已获取新数据,而实际上并非如此)。

我也不想让我的服务被系统杀死。

有什么简单有效的解决方案吗?我很难找到适合我需要的东西,而且我对自己编写的 Android 编程很陌生。我找到了很多解决方案,但我真的不知道哪个是“正确”的解决方案,哪个是最有效的。

4

2 回答 2

3

您应该使用AlarmaManager来安排定期任务。无需长时间运行的服务。它只是执行计划挂起的意图,并在所有执行完成后完成。

于 2012-11-19T21:26:30.777 回答
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();
于 2012-11-19T21:55:17.940 回答