2016-05-13 165 views
2

因此,我有廣播接收器開機啓動。我有一個使用廣播接收器收集的信息的活動。我希望活動能夠在每次調用廣播接收器時更新其回收器視圖,問題是活動沒有參考廣播接收器。有沒有一種方法可以讓我的活動監聽廣播並更新自身?活動收聽廣播接收器

我唯一能想到的就是讓活動運行一個重複的任務,它會嘗試用新信息更新自己。這對我來說似乎不是一個好的解決方案。

回答

2

最好的辦法是註冊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

享受。

0

註冊爲BOOT_COMPLETED動作的廣播接收器與該活動無關,它是一個獨立的組件。所以,是的,你沒有參考你的活動,你不應該運行任何定期任務。

我會做的是將收集的數據寫入數據庫或共享首選項,然後在您的活動實際上在屏幕上時讀取它。

如果您使用SQLite數據庫,則可以使用ContentObserver來通知您的活動有關基礎數據的更改。這對裝載機很有效。

如果有共享偏好設置,您可以使用在您的活動中註冊的OnSharedPreferenceChangeListener