0

我编写了一项服务,该服务从基于 CRM 的 Web 服务中获取数据并将其放入手机上的数据库中。现在这个服务必须每 3 小时运行一次,所以它可以在 CRM 和 android 数据库之间同步数据。

现在要让该服务自行运行,我使用警报管理器并让 Web 服务自行“启动”。

Intent intent = new Intent(ServiceClass.this, ServiceClass.class);
PendingIntent pintent = PendingIntent.getService(ServiceClass.this, 0, intent, 0);
AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 10800*1000, pintent);

重新启动后需要启动此服务,为此我使用此处概述的方法..

我只是想知道我是否走在正确的道路上,或者我是否犯了错误,或者是否有更好的方法来做到这一点。我没有太多使用Android,只需要一些指示。谢谢!

4

1 回答 1

2

是的,你在正确的道路上。警报管理器非常可靠,专门用于此目的 - 安排未来的任务(重复和非重复)。

我同意@tyczj,您绝对应该将您的 ServiceClass 定义为IntentService。IntentService是 Service 的子类,它在后台运行,专门设计用于执行特定任务,然后在完成后自行终止。它非常适合下载数据和后台同步。

它也很容易实现,您很可能只需要覆盖一种方法 - onHandleIntent - 这是服务启动时调用的方法。

要在重新启动时重新安排任务,我使用该帖子中概述的方法。希望这可以帮助!

于 2013-10-25T21:13:20.207 回答