[英]Activity Listen for broadcast receiver
所以我有啟動時開始的廣播接收器。 我有一個使用廣播接收器收集的信息的活動。 我希望活動能夠在每次調用廣播接收器時更新其回收器視圖,問題是該活動沒有對廣播接收器的引用。 有沒有辦法讓我的活動監聽廣播並自行更新?
我唯一能想到的是讓活動運行一個重復的任務,它會嘗試用新信息更新自己。 這對我來說似乎不是一個好的解決方案。
最好的方法是注冊一個BroadcastReceiver
- 請參閱有關此的文檔。 在您的情況下,您希望以編程方式注冊一個廣播接收器,以便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 教程。
享受。
為BOOT_COMPLETED
操作注冊的廣播接收器與活動無關,它是一個單獨的組件。 所以,是的,您沒有對您的活動的引用,您不應該運行任何定期任務。
我要做的是將收集到的數據寫入數據庫或共享首選項,然后在您的活動實際出現在屏幕上時讀取它。
如果您使用 SQLite 數據庫,您可以使用ContentObserver
來通知您的活動有關基礎數據的更改。 這適用於裝載機。
在共享首選項的情況下,您可以使用在您的活動中注冊的OnSharedPreferenceChangeListener
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.