EventBus3.0的使用
相关文章:
http://greenrobot.org/eventbus/documentation/
http://blog.csdn.net/qq_28746251/article/details/51476389
http://www.jianshu.com/p/1eaca34e5314
1、定义消息类型
package com.lwb.event;
public class FirstEvent {
private String mMsg;//消息内容
private String tag; //消息类型
public FirstEvent(String mMsg, String tag) {
super();
this.mMsg = mMsg;
this.tag = tag;
}
public String getTag() {
return tag;
}
public void setTag(String tag) {
this.tag = tag;
}
public FirstEvent(String msg) {
mMsg = msg;
}
public String getMsg() {
return mMsg;
}
}
package com.lwb.main;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import com.lwb.event.FirstEvent;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
public class MainActivity extends AppCompatActivity {
TextView mTextView1 = null;
TextView mTextView2 = null;
TextView mTextView3 = null;
TextView mTextView4 = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView1 = (TextView) findViewById(R.id.text1);
mTextView2 = (TextView) findViewById(R.id.text2);
mTextView3 = (TextView) findViewById(R.id.text3);
mTextView4 = (TextView) findViewById(R.id.text4);
//注册监听
EventBus.getDefault().register(this);
}
/**
* 用这个函数来接收消息
*
* @param event 自己定义的类
*/
@Subscribe(threadMode = ThreadMode.MAIN,sticky = true)
public void receiveMsg(FirstEvent event) {
String tag = event.getTag();
if (tag != null && !TextUtils.isEmpty(tag)) {
Log.i(TAG, "收到了tag的消息");
} else {
String msg = "ThreadMode.MAIN" + event.getMsg();
mTextView1.setText(msg);
Log.i(TAG, "不是tag的消息" + msg);
Toast.makeText(this, msg, Toast.LENGTH_LONG).show();
}
}
@Subscribe(threadMode = ThreadMode.POSTING)
public void receiveMsg1(FirstEvent event) {
String tag = event.getTag();
if (tag != null && !TextUtils.isEmpty(tag)) {
Log.i(TAG, "收到了tag的消息");
} else {
String msg = " ThreadMode.POSTING" + event.getMsg();
mTextView2.setText(msg);
Log.i(TAG, "不是tag的消息" + msg);
Toast.makeText(this, msg, Toast.LENGTH_LONG).show();
}
}
@Subscribe(threadMode = ThreadMode.BACKGROUND)
public void receiveMsg2(FirstEvent event) {
String tag = event.getTag();
if (tag != null && !TextUtils.isEmpty(tag)) {
Log.i(TAG, "收到了tag的消息");
} else {
String msg = "ThreadMode.BACKGROUND " + event.getMsg();
mTextView3.setText(msg);
Log.i(TAG, "不是tag的消息" + msg);
Toast.makeText(this, msg, Toast.LENGTH_LONG).show();
}
}
@Subscribe(threadMode = ThreadMode.ASYNC)
public void receiveMsg3(FirstEvent event) {
String tag = event.getTag();
if (tag != null && !TextUtils.isEmpty(tag)) {
Log.i(TAG, "收到了tag的消息");
} else {
String msg = "ThreadMode.ASYNC" + event.getMsg();
mTextView4.setText(msg);
Log.i(TAG, "不是tag的消息" + msg);
Toast.makeText(this, msg, Toast.LENGTH_LONG).show();
}
}
private static final String TAG = "MainActivity222";
public void onBtnClick(View view) {
Intent intent = new Intent(getApplicationContext(), SecondActivity.class);
startActivity(intent);
}
@Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}
}
3、发布消息
package com.lwb.main;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import com.lwb.event.FirstEvent;
import org.greenrobot.eventbus.EventBus;
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
}
public void onBtnClick4All(View view) {
EventBus.getDefault().post(new FirstEvent("onBtnClick4All"));
}
public void onBtnClick4One(View view) {
EventBus.getDefault().post(new FirstEvent("onBtnClick4One", "1"));
}
}