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