2013-10-25 82 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 - 這是服務啓動時調用的方法。

要在重新啓動時重新安排任務,該文章中概述的方法就是我使用的方法。希望這可以幫助!