所以我有广播接收器开始启动。我有一项活动,使用广播接收器收集的信息。我希望活动能够在每次调用广播接收器时更新其回收器视图,问题是活动没有引用广播接收器。有没有办法可以让我的活动收听广播并自行更新?
我唯一能想到的是让活动运行一个重复的任务,尝试用新信息更新自己。这对我来说似乎不是一个好的解决方案。
答案 0 :(得分:2)
最好的方法是注册BroadcastReceiver
- 请参阅documentation on this。在您的情况下,您需要Programmatically register a broadcast receiver以便onReceive(Context context, Intent intent)
类内的Activity
。这样,您就可以根据需要更新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。
享受。
答案 1 :(得分:0)
注册BOOT_COMPLETED
动作的广播接收器与活动无关,它是一个单独的组件。所以,是的,你没有参考你的活动,你不应该执行任何定期任务。
我要做的是将收集的数据写入数据库或共享首选项,然后在您的活动实际在屏幕上时读取它。
如果您使用SQLite数据库,则可以使用ContentObserver
通知您的活动有关基础数据的更改。这适用于装载机。
如果是共享偏好设置,您可以使用活动中注册的OnSharedPreferenceChangeListener
。