2011-07-27 50 views
0

是否有可能從活動更新當前運行的BroadcastReceiver?例如:更新當前正在運行的BroadcastReceiver(傳遞新值)和活動

假定用戶輸入的字符串...然後點擊提交...我要廣播接收機與新的字符串進行更新,並使用該字符串,而不是舊的一個接收器可以有。這可能嗎?或者,我可以以某種方式停止舊的接收器,當用戶點擊提交,然後用新的字符串重新啓動它?

回答

0

也許我誤解你的問題,但爲什麼不存儲在SharedPreference你的字符串?

只要您的活動需要更新該字符串,它會將其保存爲首選項,並將其保存爲您的broadcastreceiver的onReceive方法,您只需從首選項中將其取回即可。

+0

可以共享偏好是一個ArrayList ? –

+0

不,它不能但它可以是一個集。請參閱getStringSet方法。所不同的只是,你不能得到任何重複的字符串(而列表可以讓你有重複) – ccheneson

+0

僅適用於3.0 –

0

我不認爲你可以。如果您查看Receiver Lifecycle文檔,您會看到生命週期僅限於onReceive。

如果接收器的生命週期足夠長,用戶與其互動,我會簡單地使用廣播接收器來啓動服務。該服務可以做兩件事情:

  1. 啓動後臺線程來執行長時間運行的任務
  2. 與更新的字符串(如在活動更新由用戶的IntentFilter的註冊(不同)BroadcastRecevier )。當服務收到意圖時,它將更新字符串值。請注意,您必須在服務和後臺線程之間進行同步(作爲練習留給感興趣的讀者)。

然後,只要用戶修改相關值,您的Activity代碼就會觸發一個Intent。

關於這個解決方案的好處是,如果該服務沒有運行,則意圖被掉到地上,你不必在所有啓動該服務。如果服務正在運行,則發生更新。

相關問題