2010-08-21 109 views
0

所以我有需要通知,該公司已經接到了一條短信服務的廣播接收機偏好。做到這一點的唯一方法(據我所知)是一種靜態方法。但是被通知的方法需要訪問應用程序的首選項。如何訪問一個靜態方法

每次我都試過法說,它不能從一個靜態方法來訪問。那麼如何從靜態方法訪問首選項?

+0

您可以分享服務中的代碼樣本嗎? – st0le 2010-08-21 06:20:49

回答

1

工作的一些代碼樣本做到這一點的唯一方法(據我所知)是一種靜態方法。

幾乎沒有。實際上,不建議這種方法。

如果服務在收到廣播時應該在內存中,請讓服務通過registerReceiver()註冊BroadcastReceiver並直接處理。如果服務不應該是在內存中接收的廣播時,使用startService()啓動該服務,併發送了一個Intent(在服務的onStart()回升)。

那麼,如何訪問喜好從一個靜態方法?

見Pentium10的答案。

+0

非常感謝,所以當我註冊接收器時,我怎麼知道什麼時候收到了什麼? – 2010-08-21 07:17:17

+0

其實,我都有種返工我在做什麼,我現在有接收器設置爲啓動該服務,並送過來的意圖,但我可以有多個短信進來,所以我怎麼能發過去一個又一個曾經服務已經開始? (我仍然對第一個問題的答案感到好奇) – 2010-08-21 07:21:38

+0

@Andrew Guenther:「當我註冊接收器時,我怎麼知道什麼時候收到了什麼?」 - 因爲接收器是用'onReceive()'調用的。使其成爲服務的內部類,並且可以調用服務上的方法。 「一旦服務已經開始,我怎樣才能發送另一個?」 - 再次調用'startService()'。理想情況下,你的服務是一個'IntentService',它在後臺線程上處理Intents,如果需要則將'Intents'排隊,並在沒有更多工作要做時自動關閉。 – CommonsWare 2010-08-21 07:56:26