是否有可能從活動更新當前運行的BroadcastReceiver?例如:更新當前正在運行的BroadcastReceiver(傳遞新值)和活動
假定用戶輸入的字符串...然後點擊提交...我要廣播接收機與新的字符串進行更新,並使用該字符串,而不是舊的一個接收器可以有。這可能嗎?或者,我可以以某種方式停止舊的接收器,當用戶點擊提交,然後用新的字符串重新啓動它?
是否有可能從活動更新當前運行的BroadcastReceiver?例如:更新當前正在運行的BroadcastReceiver(傳遞新值)和活動
假定用戶輸入的字符串...然後點擊提交...我要廣播接收機與新的字符串進行更新,並使用該字符串,而不是舊的一個接收器可以有。這可能嗎?或者,我可以以某種方式停止舊的接收器,當用戶點擊提交,然後用新的字符串重新啓動它?
也許我誤解你的問題,但爲什麼不存儲在SharedPreference你的字符串?
只要您的活動需要更新該字符串,它會將其保存爲首選項,並將其保存爲您的broadcastreceiver的onReceive
方法,您只需從首選項中將其取回即可。
我不認爲你可以。如果您查看Receiver Lifecycle文檔,您會看到生命週期僅限於onReceive。
如果接收器的生命週期足夠長,用戶與其互動,我會簡單地使用廣播接收器來啓動服務。該服務可以做兩件事情:
然後,只要用戶修改相關值,您的Activity代碼就會觸發一個Intent。
關於這個解決方案的好處是,如果該服務沒有運行,則意圖被掉到地上,你不必在所有啓動該服務。如果服務正在運行,則發生更新。
可以共享偏好是一個ArrayList? –
不,它不能但它可以是一個集。請參閱getStringSet方法。所不同的只是,你不能得到任何重複的字符串(而列表可以讓你有重複) –
ccheneson
僅適用於3.0 –