EventBus 传递数据到新 Activity

来自Silica Library | 間奏時光
Silica讨论 | 贡献2020年5月21日 (四) 08:34的版本 →‎要点
跳到导航 跳到搜索

2020-05-21 16:28

要点

  1. 无需接受参数的地方不需要 registerunregister
  2. 官方文档是在 onStart()onStop()registerunregister
  3. 传递数据到新 Activity 时,因为新 Activity 还没注册,所以为了能够 先传递数据再注册,使用 postSticky();
  4. 已经没有 registerSticky() 了。

版本

  3.2.0

MainActivity

binding.btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        EventBus.getDefault().postSticky("Silica");  // 注意:使用 postSticky()
        startActivity(new Intent(MainActivity .this, SecondActivity.class));
    }
});

SecondActivity

@Override
public void onStart() {
    super.onStart();
    EventBus.getDefault().register(this);
}

@Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
public void onEvent(String event) {
    binding.tv.setText(event);  // 接收到的 event 就是 String 的 "Silica"
}

@Override
public void onStop() {
    EventBus.getDefault().unregister(this);
    super.onStop();
}