繁体   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