活动收听广播接收器

时间:2016-05-13 19:46:19

标签: android broadcastreceiver

所以我有广播接收器开始启动。我有一项活动,使用广播接收器收集的信息。我希望活动能够在每次调用广播接收器时更新其回收器视图,问题是活动没有引用广播接收器。有没有办法可以让我的活动收听广播并自行更新?

我唯一能想到的是让活动运行一个重复的任务,尝试用新信息更新自己。这对我来说似乎不是一个好的解决方案。

2 个答案:

答案 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