2012-10-12 377 views
0

如果我瞭解Android手冊,BroadcastReceiver被視爲無狀態實體,所以我應該保留一個服務作爲數據容器(這些是我的結論)。如何在BroadcastReceiver中保存和訪問數據?

中爲每個數據訪問我應該執行startService每個請求(?) - 我可以用這種方式傳遞數據服務,但如何找回數據?

我的意思是在推薦的方式?我可以考慮傳遞「out」數據,完成服務會改變它,所以當startService返回時,我可以檢查我發送的數據以檢索結果。

回答

2

如果我理解Android手冊,BroadcastReceiver被視爲無狀態實體,所以我應該保留一個服務作爲數據容器(這是我的結論)。

有一項專門用於保存數據的服務會讓您的用戶不喜歡您,並且無法保證數據會堅持到底。用戶和操作系統可以隨時隨地擺脫您的流程。

請使用用於保存需要過程調用之間的生存數據文件(例如,數據庫,SharedPreferences)。

+0

無論如何,它有一個服務,因爲它首先推出了接收器。 – greenoldman

+1

@macias:如果通過「它啓動接收器」,您的意思是服務調用registerRecevier(),那麼只需將BroadcastReceiver作爲Service的內部類,在這種情況下,兩個對象都可以訪問'服務的數據成員。儘管如此,這並不能消除對持久數據存儲的需求,對於那些應該超越服務生命週期的數據,服務不會永遠存在。 – CommonsWare

+0

謝謝。這很有價值,但我想保持清潔並有單獨的文件(並且瞭解更多)。我會保持數據的喜好,因爲你(而且只是8blaze)說,但我也需要與服務溝通。 – greenoldman

1

我不會用這個服務,SharedPreferences是用於存儲一些鍵/值對數據非常有用。

相關問題