EventBusDemo

来源:互联网 发布:淘宝活动怎样能找到 编辑:程序博客网 时间:2024/06/05 04:18
// 主界面 public class MainActivity extends AppCompatActivity { // 显示消息的 控件 private TextView mMessageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //注册事件 EventBus.getDefault().register(this); // 初始化 mMessageView = (TextView) findViewById(R.id.message); findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, SecondActivity.class); startActivity(intent); } }); findViewById(R.id.button2sticky).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, StickyModeActivity.class); startActivity(intent); } }); } // TODO 在产生事件的线程中执行 同发送消息 同一个线程 @Subscribe(threadMode = ThreadMode.PostThread) public void onMessageEventPostThread(MessageEvent messageEvent) { Log.e("PostThread", Thread.currentThread().getName()); } // TODO 在UI线程中执行 无论从那个线程发送的消息 @Subscribe(threadMode = ThreadMode.MainThread) public void onMessageEventMainThread(MessageEvent messageEvent) { Log.e("MainThread", Thread.currentThread().getName()); mMessageView.setText(messageEvent.getMessage()); } // TODO 如果产生事件的是UI线程,则在新的线程中执行。如果产生事件的是非UI线程,则在产生事件的线程中执行 @Subscribe(threadMode = ThreadMode.BackgroundThread) public void onMessageEventBackgroundThread(MessageEvent messageEvent) { Log.e("BackgroundThread", Thread.currentThread().getName()); } // TODO 无论产生事件的是否是UI线程,都在新的线程中执行 @Subscribe(threadMode = ThreadMode.Async) public void onMessageEventAsync(MessageEvent messageEvent) { Log.e("Async", Thread.currentThread().getName()); } @Override protected void onDestroy() { super.onDestroy(); //取消事件注册 EventBus.getDefault().unregister(this); }}// main XML// 第二个 Activity public class SecondActivity extends AppCompatActivity { private EditText mMessageET; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); // 初始化 mMessageET = (EditText) findViewById(R.id.messageET); // 初始化 按钮 点击事件 findViewById(R.id.send).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(SecondActivity.this,ThreeActivity.class)); } }); // TODO EventBus 注册 EventBus.getDefault().register(this); // TODO 初始化 tvShowMSG01= (TextView) findViewById(R.id.tvShowMSG01_SecondActivity); tvShowMSG02= (TextView) findViewById(R.id.tvShowMSG02_SecondActivity); } TextView tvShowMSG01; TextView tvShowMSG02; //===================================================================== @Subscribe(threadMode = ThreadMode.MainThread) public void showMSG(MessageEvent messageEvent){ if(messageEvent.getType()==1){ // TODO 显示 传递过来的事件 tvShowMSG01.setText(messageEvent.getMessage()); }else{ tvShowMSG02.setText("这里测试Type"); } } @Override protected void onDestroy() { super.onDestroy(); // 注销事件 EventBus.getDefault().unregister(this); }}// SecondActivity XMl// 发送 信息的 界面 public class ThreeActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_three); final EditText editText= (EditText) findViewById(R.id.etEventBus); findViewById(R.id.btnEventBus).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // TODO EventBus 发送消息 EventBus.getDefault().post(new MessageEvent(editText.getText().toString(),1)); //EventBus.getDefault().post(new MessageEvent(editText.getText().toString(),2)); } }); }}// ThreeActivity XML <?xml version="1.0" encoding="utf-8"?>// 类名是需要这么写的 里面的属性可以自定 public class MessageEvent { private String message; public MessageEvent(String message,int type) { this.message = message; this.type=type; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } private int type; public int getType() { return type; } public void setType(int type) { this.type = type; }}
原创粉丝点击