EventBus 傳遞數據到新 Activity

出自Silica Library | 間奏時光
跳至導覽 跳至搜尋

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();
}