EventBus 傳遞數據到新 Activity

出自Silica Library | 間奏時光
於 2020年5月21日 (四) 08:33 由 Silica留言 | 貢獻 所做的修訂 (创建页面,内容为“Category:Android 2020-05-21 16:28 == 要点 ==   1. 无需接受参数的地方不需要 <code>register</code> 和 <code>unregister</code>;<br>   2.…”)
(差異) ←上個修訂 | 最新修訂 (差異) | 下個修訂→ (差異)
跳至導覽 跳至搜尋

2020-05-21 16:28

要點

  1. 無需接受參數的地方不需要 registerunregister
  2. 官方文檔是在 onStart()onStop()registerunregister
  3. 已經沒有 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();
}