簡體   English   中英

活動偵聽廣播接收器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM