因此,我有廣播接收器開機啓動。我有一個使用廣播接收器收集的信息的活動。我希望活動能夠在每次調用廣播接收器時更新其回收器視圖,問題是活動沒有參考廣播接收器。有沒有一種方法可以讓我的活動監聽廣播並更新自身?活動收聽廣播接收器
我唯一能想到的就是讓活動運行一個重複的任務,它會嘗試用新信息更新自己。這對我來說似乎不是一個好的解決方案。
因此,我有廣播接收器開機啓動。我有一個使用廣播接收器收集的信息的活動。我希望活動能夠在每次調用廣播接收器時更新其回收器視圖,問題是活動沒有參考廣播接收器。有沒有一種方法可以讓我的活動監聽廣播並更新自身?活動收聽廣播接收器
我唯一能想到的就是讓活動運行一個重複的任務,它會嘗試用新信息更新自己。這對我來說似乎不是一個好的解決方案。
最好的辦法是註冊BroadcastReceiver
- 見documentation on this。在你的情況下,你想要Programmatically register a broadcast receiver,以便Activity
類中的onReceive(Context context, Intent intent)
。這樣,您就可以根據需要更新Recyclerview
。例如:
public void onCreate(Bundle savedInstanceState){
...
IntentFilter filter = new IntentFilter();
//you may want to set whatever filters here...
//define the broadcast receiver
receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//here you can update the RecyclerView as you desire using intent's data
}
};
//register the broadcast receiver
registerReceiver(receiver, filter);
}
我強烈建議您通過這個不錯的BroadcastReceiver tutorial。
享受。
註冊爲BOOT_COMPLETED
動作的廣播接收器與該活動無關,它是一個獨立的組件。所以,是的,你沒有參考你的活動,你不應該運行任何定期任務。
我會做的是將收集的數據寫入數據庫或共享首選項,然後在您的活動實際上在屏幕上時讀取它。
如果您使用SQLite數據庫,則可以使用ContentObserver
來通知您的活動有關基礎數據的更改。這對裝載機很有效。
如果有共享偏好設置,您可以使用在您的活動中註冊的OnSharedPreferenceChangeListener
。