我编写了一项服务,该服务从基于CRM的Web服务获取数据并将数据放入手机中。现在这项服务必须每3小时运行一次,因此它可以在CRM和android数据库之间同步数据。
现在要让这项服务自行运行,我正在使用警报管理器并让网络服务“自行启动”。
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);
此服务需要在重启后启动,为此我正在使用method outlined here..
我只是想知道我是否正走在正确的道路上,或者我是否犯了错误,或者是否有更好的方法来做到这一点。我没有使用Android很多,只需要一些指针。谢谢!
答案 0 :(得分:2)
是的,你走在正确的道路上。报警管理器非常可靠,专门用于此目的 - 计划将来的任务(重复和非重复)。
我同意@tyczj,你绝对应该将你的ServiceClass定义为IntentService。 IntentService是Service的子类,它在后台运行,专门用于执行特定任务,然后在完成后自行终止。它非常适合下载数据和后台同步。
实现起来也很容易,你很可能只需要覆盖一个方法 - onHandleIntent - 这是服务启动时调用的方法。
要在重新启动时重新安排任务,该帖子中概述的方法就是我使用的方法。希望这有帮助!