2013-10-25 158 views
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); 

此服务需要重新启动后启动,为此目的我使用的method outlined here..

我只是想知道如果我要在正确的道路上,或者如果我犯了一个错误,或者如果有更好的方法来做到这一点。我还没有和Android合作过,只需要几个指针。谢谢!

+0

你正在使用什么样的服务,希望它的'IntentService' – tyczj

+0

@tyczj我正在使用实现Service的类。如果这是一个矫枉过正,我会使用IntentService –

回答

2

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

我同意@tyczj,你应该明确定义你的ServiceClass为IntentServiceIntentService是Service的一个子类,它在后台运行,专门用于执行特定任务,然后在完成后自行终止。它非常适合下载数据和后台同步。

这很容易实现,你很可能只需要重写一个方法 - onHandleIntent - 这是服务启动时调用的方法。

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