implementation 'org.greenrobot:eventbus:3.1.1'
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <Button android:id="@+id/bt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="跳转到Second" /> <Button android:id="@+id/bt2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="发送消息" /> </LinearLayout>
activity_second.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <Button android:id="@+id/btt" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="发送消息"/> </LinearLayout>
MainActivity
package com.example.asus.eventbus; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; public class MainActivity extends Activity implements View.OnClickListener { private Button button; private TextView text; /** * 跳转到Second */ private Button bt; /** * 发送消息 */ private Button bt2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); //注册EventBus EventBus.getDefault().register(this); } @Subscribe(threadMode = ThreadMode.POSTING,priority = 1) public void onMessageEvent1(FirstEvent event) { Log.i("Tag","onMessageEvent1"+event.getmMsg()); } @Subscribe(threadMode = ThreadMode.POSTING,priority = 2) public void onMessageEvent2(FirstEvent event) { Log.i("Tag","onMessageEvent2"+event.getmMsg()); } @Subscribe(threadMode = ThreadMode.POSTING,priority = 3) public void onMessageEvent3(FirstEvent event) { Log.i("Tag","onMessageEvent3"+event.getmMsg()); } @Subscribe(threadMode = ThreadMode.POSTING,priority = 4) public void onMessageEvent4(FirstEvent event) { Log.i("Tag","onMessageEvent4"+event.getmMsg()); } @Subscribe(threadMode = ThreadMode.POSTING,priority = 5) public void onMessageEvent5(FirstEvent event) { Log.i("Tag","onMessageEvent5"+event.getmMsg()); } @Override protected void onDestroy() { super.onDestroy(); //反注册EventBus EventBus.getDefault().unregister(this); } private void initView() { bt = (Button) findViewById(R.id.bt); bt.setOnClickListener(this); bt2 = (Button) findViewById(R.id.bt2); bt2.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { default: break; case R.id.bt: Intent intent = new Intent(MainActivity.this, SecondActivity.class); startActivity(intent); break; case R.id.bt2: new Thread(new Runnable() { @Override public void run() { Log.e("MainActivity","当前线程:"+Thread.currentThread().getName()); EventBus.getDefault().post(new FirstEvent("Main 发送的消息")); } }).start(); break; } } }
SecondActivity
package com.example.asus.eventbus; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import org.greenrobot.eventbus.EventBus; public class SecondActivity extends Activity implements View.OnClickListener { /** * 发送消息 */ private Button mBt; /** * 发送消息 */ private Button btt; /** * First Event */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); initView(); } private void initView() { btt = (Button) findViewById(R.id.btt); btt.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { default: break; case R.id.btt: new Thread(new Runnable() { @Override public void run() { Log.e("SecondActivity","当前线程:"+Thread.currentThread().getName()); EventBus.getDefault().post(new FirstEvent("Second 发送的消息")); } }).start(); break; } } }
FirstEvent
package com.example.asus.eventbus; import org.greenrobot.eventbus.EventBus; public class FirstEvent { private String mMsg; public FirstEvent(String msg){ mMsg=msg; } public String getmMsg(){ return mMsg; } }