事件总线这个其实没什么好说的,除了已经ondestroy的fragment或者activity不能接受外,只要定义了的都能接收消息
代码以下,须要注意的一点就是接收的监听事件必须用public修饰而且加上@Subscribe注解ide
compile 'org.greenrobot:eventbus:3.0.0'
public class MainActivity extends Activity { private TextView textView; @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = findViewById(R.id.tv); textView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(); intent.setClass(MainActivity.this, SecondActivity.class); startActivity(intent); } }); EventBus.getDefault().register(this); } @Subscribe public void onMessageEvent(MessageEvent messageEvent){ textView.setText(messageEvent.getMessage()); } @Override protected void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this); } }
public class SecondActivity extends AppCompatActivity { private TextView tv_receive; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); tv_receive = findViewById(R.id.tv_receive); tv_receive.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { EventBus.getDefault().post(new MessageEvent("发送成功")); finish(); } }); } @Override protected void onDestroy() { super.onDestroy(); } }
public class MessageEvent { private String message; public MessageEvent(String message) { this.message = message; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } }