2012-11-17 86 views
5

問題:1 => 我想每天從上午9點到下午4點運行服務。我計劃兩種方法。哪一種最好?如何從上午9點到下午4點運行服務?

方法1: 內部服務:(初始化該服務在上創建活動的第一次應用程序啓動時)

if (9 AM <=current time<=4 PM) 
{ 
    fetch data from server. 
} 

方法2:

在活動的OnCreate使用報警經理並根據警報管理器啓動服務。然後在第二天醒來開始服務。

哪種方法最好?

問題:2 =>如何查找服務正在運行或不是以編程方式運行?

+0

使用Alarm Manager啓動服務9AM,並在4PM結束。該AlarmManager應該在第二天同時使用掛起的意圖喚醒。確保您的應用程序在設備重新啓動時啓動。 –

回答

1

編寫一個BroadcastReciever以接收ON_BOOT廣播(您需要爲清單添加適當的權限和意圖過濾器)。 BroadcastReceiver僅用於通過Alarm Manager創建上午9點通知。計劃的警報具有將啓動該服務的PendingIntent。顯然,將警報設置爲每24小時重複一次。

啓動時,服務正常運行直到下午4點,此時它會自行停止。

服務的onStartCommand()方法應該返回適​​當的標誌,以使系統在崩潰或死亡時重新啓動它。

我弄不明白的唯一事情是如何在第一次安裝時自動啓動服務。等待重啓設備不太實際。當我編寫這樣的應用程序時,他們通常會與具有控件的活動結合起來以停止服務。

+0

所以我需要在啓動時間廣播接收器中添加Alarm Manager,而不是在Activity oncreate中添加。如果這樣做,我們需要在安裝應用程序之後重新啓動設備以設置鬧鐘管理器。 – Ramprasad

+1

活動onCreate()實際上是一個更好的選擇,但如果您希望服務在設備重新啓動後自動重新啓動,則應該同時執行這兩個操作。 –

相關問題