“EventBus 传递数据到新 Activity”的版本间差异
跳到导航
跳到搜索
(→要点) |
(→要点) |
||
第5行: | 第5行: | ||
1. 无需接受参数的地方不需要 <code>register</code> 和 <code>unregister</code>;<br> | 1. 无需接受参数的地方不需要 <code>register</code> 和 <code>unregister</code>;<br> | ||
2. 官方文档是在 <code>onStart()</code> 和 <code>onStop()</code> 中 <code>register</code> 和 <code>unregister</code>;<br> | 2. 官方文档是在 <code>onStart()</code> 和 <code>onStop()</code> 中 <code>register</code> 和 <code>unregister</code>;<br> | ||
3. 传递数据到新 Activity 时,因为新 Activity 还没注册,所以为了能够 <code>先传递数据再注册</code>,使用 postSticky();<br> | 3. 传递数据到新 Activity 时,因为新 Activity 还没注册,所以为了能够 <code>先传递数据再注册</code>,使用 <code>postSticky()</code> ;<br> | ||
4. 已经没有 <code>registerSticky()</code> 了。<br> | 4. 已经没有 <code>registerSticky()</code> 了。<br> | ||
2020年5月21日 (四) 08:35的最新版本
2020-05-21 16:28
要点
1. 无需接受参数的地方不需要 register
和 unregister
;
2. 官方文档是在 onStart()
和 onStop()
中 register
和 unregister
;
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(); }