2010-02-17 28 views

回答

5

如果服務正在運行,您可以直接通過registerReceiver()Service中註冊BroadcastReceiver

否則,調用startService()BroadcastReceiverService知道事件的,起動Service如果它沒有運行。請務必在某個時間點關閉Service(例如,使用IntentService,當沒有其他工作要做時它會自動關閉)。

+0

謝謝,該服務是一個SIP服務,將運行整個時間定期註冊一個SIP註冊服務器。我有一個獨立的wifi類,有廣播接收器,用於監聽RSSI電平變化和Wifi連接變化。我想保持單獨的SIP服務,並告訴SIP服務,當無線網絡已經失去連接,停止嘗試註冊,當它連接嘗試註冊 –

+1

使用第一種模式 - 註冊一個「BroadcastReceiver」的相關通過'registerReceiver()'在「服務」本身中廣播。 「保持這種分離」是一個編碼問題,不應該規定你的Android架構。 – CommonsWare

+0

所以你建議把我的Wifi課程中的廣播接收器拿出來放入服務中?所以我想讓Wifi類監聽這些變化,然後讓幾個不同的服務和活動知道這個變化,所以我會認爲讓Wifi類監聽一個地方的變化會比不同的廣播接收機負載更好服務和活動?所以我想使用Custom Intents? –

相關問題