2011-07-19 56 views
0

我正在使用基於此示例的媒體播放應用程序:How to design activity-service interaction for a simple mp3 player?從正在運行的服務請求數據的最佳方式是什麼?

它工作正常,但我不確定如何從按需服務請求數據。具體來說,我想用歌曲的位置更新進度條,以便服務能夠將該信息返回給客戶端活動。更新應該每秒發生一次。因爲它只是在需求(即只有當活動可見時)廣播可能不是解決方案。

因此,從目前爲止我所知道的,我可以使用Messenger或我可以綁定服務。

在給定的情況下,最合適的是什麼?更新頻率爲1秒?

增加:

據我所知,該服務將與活動停止時,它的約束。這當然不是我想要的音樂播放器。因此,我嘗試使用startService()來綁定服務併發送具有意圖的命令。這似乎工作正常,但這是一個明智的做法?我這樣做的原因是,服務在startService啓動後停止活動。

回答

0

如果您正在尋找一些實施音樂播放器的指南,最好的地方是檢查android的默認Music Player來源。

對於您的問題,我認爲正確的方法是將您的活動綁定到服務並保留對服務的引用。不是簡單地在您的活動中啓動計時器,而是每秒向服務詢問當前進度。

加法: 再次檢查源代碼。你會注意到,當所有的活動都從服務中解除時,檢查是否有東西可以播放。如果有什麼要播放的服務是而不是停止播放繼續,否則服務停止(以釋放它的資源,並等待再次需要的時間)。要查看上面在現實生活中實現的方法,請在onNind()上檢查MusicPlaybackService的方法。

+0

謝謝。我沒有想到在音樂播放器的來源。我已經更新了我的原始帖子,並提供了關於綁定服務的生命期的其他問題。 – marlar

+0

我也更新了我的答案。 –

+0

好的,現在已經越來越清晰了。仍然有一個問題:是不是這樣,如果說服務的活動暫停並最終被殺死,就像用戶將手機放在口袋裏並長時間收聽,那麼服務也會停止?或者這是我誤解的東西? – marlar

相關問題