2012-04-01 88 views

回答

1

其實這些是兩個完全不同的東西。可以使用Alarm Manager定期使用服務執行一些任務。但是,服務也可以用於例如將一些繁重的工作從UI線程中移出(從其他服務器下載數據)或者在前臺服務的情況下,連續進行一些工作(MP3播放器)。

您可以在Styling Android上獲得關於如何使用服務的一些解釋(有些建議考慮AlarmManager)。

+0

您可以立即在onreceive()函數中設置警報在單獨的線程中完成繁重的工作。 – Ashwin 2012-04-01 16:57:37

+0

說實話,我從來沒有試過這樣做。但是,服務在沒有AlarmManager的情況下用於許多其他任務。例如,我使用服務從其他服務器下載數據並將其提供給兩個不同的活動。我希望能夠達到相同的數據並從兩者中重新加載下載。說實話,我想不出一個很好的替代服務在這裏。 AlarmManager在這樣的任務中完全沒用 – 2012-04-01 18:45:51

0

通常,當您不再需要用戶界面時,將使用服務來處理邏輯。例如,我想要使用的服務每15分鐘檢查一次社交網站的更新情況。該服務具有處理更新的邏輯。但是誰將每15分鐘啓動一次服務?這就是使用AlarmManager的地方。它會每隔15分鐘定期啓動我的服務一次,以便服務可以執行其邏輯並在作業完成後自行停止,並且我的應用程序不會耗盡電池電量。

+0

確切地說,這就是我所說的。 「但是誰將每15分鐘就開始一次服務?」。爲什麼你需要每15分鐘啓動一次服務。您可以直接在廣播接收器的onReceiver()函數中編寫檢查更新的代碼。 – Ashwin 2012-04-01 16:55:34

+0

我不明白你在說什麼。請詳細解釋。 – Ashwin 2012-04-02 04:56:39

+0

廣播接收器在廣播匹配意圖時被觸發。即使在社交網絡服務器中存在更新的情況下,您的手機中的服務器也不會有意向傳播。只能在移動設備內完成。在這種情況下br是無用的。你只能通過連接到服務器(從服務)來了解更新 – Akhil 2012-04-02 05:08:31

1

那麼兩者都是完全不同的thigh。

AlarmManager該類用於在特定的時間間隔後執行某些事件,或者它可以處於常規時間間隔。事件也可以是服務的執行。 AlarmManager允許您安排您的應用程序在未來的某個時間點運行。

而在Service的情況下,它是一個後臺進程,它不具有/需要UI。服務不是一個安全的過程,或者服務不是一個線程。服務是一種應用程序組件,它表示應用程序希望在不與用戶交互的情況下執行長時間運行的操作,或爲其他應用程序提供使用的功能

+0

即使報警管理器是一個不需要UI的後臺進程。無論你在服務課上做什麼,同樣的事情也可以在broadcastreceiver類中完成。 – Ashwin 2012-04-02 05:02:42

+0

那麼你不能在服務類中安排事件。 – Lucifer 2012-04-02 05:03:51

+0

那麼你的結論是什麼? – Ashwin 2012-04-02 07:25:08